2014-04-02 80 views
-3

所以我们可以说我有一个字符串列表,看起来像这样:添加逗号(不工作不重复)

[["['item1','item2', 'item3']['item4', 'item5', 'item6']['item7','item8','item9']"]] 

如何用逗号分隔的小名单?

我想最终分离具有列表看起来像这样由基于一个价值排序他们,我想试试这个名单一个巨大的文本文件:

with open("sample.txt", "rU") as f: 
    lines = [line for line in f.readlines()] 

for group, items in itertools.groupby(lines[1:], lambda x: round(float(x.split()[-24]))): 
    with open('group_%s' % group, 'w') as o: 
     o.writelines(items) 

但是,这是行不通的除非有逗号分隔的,我想这嵌套列表:

f = ",".join([str(x) for x in f]) 
+0

你尝试过什么到目前为止?你的代码在哪里?你能否将你的例子变得更好一点? –

+0

另外,那不是一个字符串列表,即包含一个包含单个字符串的列表的列表。字符串列表的差异很大。 –

+0

我试图通过执行以下操作对具有此类列表的基于一个值的此超级巨大文本文件进行排序:with open(“173.076-30.309.txt”,“rU”)as f: lines = [line for ()[]:lambda x:round(float(x.split()[ - 24]))): with open(' 0) o.writelines(items) –

回答

1

假设你的意思是你有这样的字符串...

s = "['item1','item2', 'item3']['item4', 'item5', 'item6']['item7','item8','item9']" 

那么你可以使用re模块

import re 

list_of_lists = [] 

ls = re.findall(r"\[.*?\]",s) 
for l in ls: 
    print l 
    list_of_lists.append(eval(l)) 

""" 
---Outputs--- 
['item1','item2', 'item3'] 
['item4', 'item5', 'item6'] 
['item7','item8','item9'] 
""" 

,那么你可以EVAL串入一个列表...

+0

find all line给出错误TypeError:预期的字符串或缓冲区 –

+0

也许你正在传递第二个参数的列表?它应该是一个字符串。您可以遍历列表并逐个传递字符串。 – Genome

+0

我该怎么做? –