【问题标题】:Changing string in 'list format' to a string将“列表格式”的字符串更改为字符串
【发布时间】:2012-05-24 20:02:50
【问题描述】:

我有以下清单;

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 格式化为列表吗?

【问题讨论】:

  • 目标是只取 lst 并创建一个包含 lst 列表中所有项目的列表吗?
  • 抱歉不清楚,目标是创建列表(一,二),其中包含列表中包含的字符串的内容。哇,我不擅长用词。

标签: python


【解决方案1】:
(one, two) = (list(lst[0]), list(lst[1]))

【讨论】:

    【解决方案2】:

    我能想到几种方法:

    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]
    

    【讨论】:

    • 第一个选项效果很好 :) 唯一的问题是,我得到的字符串项目如下:“'karada”:有没有办法防止“'”在每个项目的开头出现后续项目?谢谢你:)
    • 看准了!再次感谢您的帮助! :)
    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 2015-10-24
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多