2

I have the following list;

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

I need to get the contents of each item set as a list, so that I can print the items individually. Eg.

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

>>

atama
karada
kami
kao
etc.

Any ideas how I could format the str(item)|s to lists once again?

4

3 に答える 3

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
于 2012-05-17T08:50:16.720 に答える
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]
于 2012-05-17T08:53:55.053 に答える
0
(one, two) = (list(lst[0]), list(lst[1]))
于 2012-05-17T09:30:02.737 に答える