2012-05-17 105 views
2

我有以下列表;將「列表格式」中的字符串更改爲字符串

lst = ["['atama', 'karada', 'kami', 'kao', 'hitai', 'me', 'mayu', 'mabuta', 'matsuge', 'hana']", 
     "['head', 'body', 'hair', 'face', 'forehead', 'eye', 'eyebrow', 'eyelid', 'eyelash', 'nose']"] 

我需要獲取每個項目集的內容作爲列表,以便我可以單獨打印項目。例如。

for item in lst: 
    for word in list(item): 
     print word 

>> 

atama 
karada 
kami 
kao 
etc. 

任何想法如何將str(item)| s重新格式化爲列表?

+0

是隻取地表溫度,並創建一個包含LST列表中的所有項目的列表的目標是什麼? – cytinus

+0

對不起,不清楚,目標是創建列表(一,二)包含列表中包含的字符串的內容..哇,我不好用的話。 – abkai

回答

1

我能想到的幾種方法:

1)手動提取每個項目:

lst = [[item.strip()[1:-1] for item in element[3:-3].split(',')] for element in lst] 

2)使用eval

lst[:] = eval(lst[0]), eval(lst[1]) 

3)使用json

import json 
lst = [json.loads(i) for i in lst] 

方法1或3是優選的。 eval是不安全的,因爲傳遞給eval的任何字符串都將被(評論)驚喜。如果您完全控制傳遞給它的內容,則僅使用eval

4)發生在我的另一個解決方案,使用正則表達式:

import re 
lst = [re.findall("['\"](\w+)['\"]", item) for item in lst] 
+0

在這個第一個選項運作良好:)唯一的是,我得到的字符串項如下:「'karada」:有沒有一種方法來防止「'」在每個後續項目開始時發生?謝謝:) – abkai

+0

@abkai:當然。我修復了我的答案。 –

+0

現貨!再次感謝您的幫助! :) – abkai

3
>>> import ast 
>>> L = ["['atama', 'karada', 'kami', 'kao', 'hitai', 'me', 'mayu', 'mabuta', 'matsuge', 'hana']", 
     "['head', 'body', 'hair', 'face', 'forehead', 'eye', 'eyebrow', 'eyelid', 'eyelash', 'nose']"] 
>>> for item in L: 
     for word in ast.literal_eval(item): 
      print word 


atama 
karada 
kami 
kao 
hitai 
me 
mayu 
mabuta 
matsuge 
hana 
head 
body 
hair 
face 
forehead 
eye 
eyebrow 
eyelid 
eyelash 
nose 
+1

忘記ast! –

0
(one, two) = (list(lst[0]), list(lst[1])) 
+0

此答案如何適合已提供的解決方案? – octopusgrabbus

相關問題