2014-04-02 90 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

我該怎麼做? –