在python中,如何将字符串列表分解为字符串列表列表?

时间:2012-03-27 10:02:01

标签: python list file-io cherrypy

我正在使用cherrypy和python脚本运行服务器。目前,有一个网页包含我需要获取的人员列表的数据。网页的格式如下:

www.url1.com, firstName_1, lastName_1
www.url2.com, firstName_2, lastName_2
www.url3.com, firstName_3, lastName_3 

我希望在自己的网页上显示名称列表,每个名称都链接到相应的网站。

我已使用以下方法将网页读入列表:

@cherrypy.expose
    def receiveData(self):
        """ Get a list, one per line, of currently known online addresses,
            separated by commas.
        """

        method = "whoonline"
        fptr = urllib2.urlopen("%s/%s" % (masterServer, method))
        data = fptr.readlines()
        fptr.close()

        return data

但我不知道如何将列表分成逗号所在的列表列表。结果应该给每个较小的列表三个元素; URL,名字和姓氏。所以我想知道是否有人可以提供帮助。

提前谢谢!

4 个答案:

答案 0 :(得分:3)

您可以迭代fptr,无需调用readlines()

data = [line.split(', ') for line in fptr]

答案 1 :(得分:2)

每个字符串都需要split(',')方法:

data = [ line.split(',') for line in fptr.readlines() ]

答案 2 :(得分:0)

lists = []
for line in data:
   lists.append([x.strip() for x in line.split(',')])

答案 3 :(得分:0)

如果您的数据是一个很大的'字符串(可能带有前导或尾随空格),请这样做:

lines="""    www.url1.com, firstName_1, lastName_1
www.url2.com, firstName_2     , lastName_2   
www.url3.com, firstName_3, lastName_3           """

data=[]
for line in lines.split('\n'):
    t=[e.strip() for e in line.split(',')]
    data.append(t)

print data    

输出:

[['www.url1.com', 'firstName_1', 'lastName_1'], ['www.url2.com', 'firstName_2', 
  'lastName_2'], ['www.url3.com', 'firstName_3', 'lastName_3']]

请注意删除了前导和尾随空格。