【问题标题】:How to convert a python list with string element without quotes to a proper list? [closed]如何将带有不带引号的字符串元素的python列表转换为正确的列表? [关闭]
【发布时间】:2017-01-19 09:40:00
【问题描述】:

考虑这个列表:

list1 = [家、学校、场地、场地] 

如您所见,列表的元素是不带引号的字符串,因此这是一个无效列表。有没有办法使用 python 将其转换为正确的列表?
该列表应如下所示:

list1 = ['home' , 'school', 'ground', 'field'] 

【问题讨论】:

  • 除非是变量名。这不是有效的代码。
  • 如果你真的有一个列表list1 = [home , school, ground, field],你会得到NameError,只是试图运行代码。
  • list1 = [home , school, ground, field] 来自哪里?您是从文本文件还是标准输入中读取它?正如其他人所说,该行在 Python 脚本中无效,除非 homeschool 等是已经存在的变量。
  • 如果是'[home , school, ground, field]',则可以使用split(',')获取有效列表
  • 我知道代码会出错,我只想知道是否有任何方法或模块可以将 list1 转换为正确的 python 列表。谢谢。

标签: python string list


【解决方案1】:

是的,从技术上讲,您可以这样做:

done = False
while not done:
    try:
        list1 = [home , school, ground, field]
    except NameError as e:
        varname = str(e).split("'")[1]
        locals()[varname] = varname
    else:
        done = True

print(list1)
# ['home', 'school', 'ground', 'field']

但我不会推荐它。

也许您可以编写一个装饰器,将每个 NameError 转换为一个变量并重新运行代码运行的任何范围,希望是一个函数......但老实说......你只是要把你的代码陷入无法维护的复杂混乱中。

另外,这段代码最初是如何编写的?除非您的脚本是由其他程序生成的模板……在这种情况下,为什么不正确生成它们? :P

【讨论】:

  • 邪恶但可爱。 ;)
  • 使用这个会有什么后果
猜你喜欢
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多