我有以下清单;
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 :(得分: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 :(得分: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]
答案 2 :(得分:0)
(one, two) = (list(lst[0]), list(lst[1]))