防止在我的列表中使用外部双引号
Prevent outer double quotes in my list
我的程序(未显示)由于插入到我的列表中的外部双引号而中断。我怎样才能使我的列表 x 中没有双引号?
s = "('x',),('y',)"
print s
('x',),('y',)
x = []
x.append(s)
print x
["('x',),('y',)"]
当我打印 x 时,我希望它的输出看起来像这样(没有双引号)
打印 x
[('x',),('y',)]
这个怎么样:
>>> s = "('x',),('y',)"
>>> s = eval(s)
>>> x = []
>>> x.extend(s)
>>> print(x)
[('x',),('y',)]
但请务必检查您是否正确执行所有操作,这正是您想要的。它绝对不是解决任何问题的最直观(或 pythonic)方式。
使用ast.literal_eval将Python数据的字符串表示形式转换为实际的数据结构:
>>> from ast import literal_eval
>>> s = "('x',),('y',)"
>>> literal_eval(s)
(('x',), ('y',))
literal_eval 的工作方式与 eval
类似,但只能从字符串中生成文字 Python 数据:字符串、数字、元组、列表、字典、布尔值和 None .比 eval
单独使用要安全得多。
如果你真的想要一个列表而不是字符串中的一个元组:
>>> list(literal_eval(s))
[('x',), ('y',)]
如果您想避免导入库,这里有另一种方法:
[(k,) for k in tuple(s) if k.isalnum()]
我的程序(未显示)由于插入到我的列表中的外部双引号而中断。我怎样才能使我的列表 x 中没有双引号?
s = "('x',),('y',)"
print s
('x',),('y',)
x = []
x.append(s)
print x
["('x',),('y',)"]
当我打印 x 时,我希望它的输出看起来像这样(没有双引号) 打印 x [('x',),('y',)]
这个怎么样:
>>> s = "('x',),('y',)"
>>> s = eval(s)
>>> x = []
>>> x.extend(s)
>>> print(x)
[('x',),('y',)]
但请务必检查您是否正确执行所有操作,这正是您想要的。它绝对不是解决任何问题的最直观(或 pythonic)方式。
使用ast.literal_eval将Python数据的字符串表示形式转换为实际的数据结构:
>>> from ast import literal_eval
>>> s = "('x',),('y',)"
>>> literal_eval(s)
(('x',), ('y',))
literal_eval 的工作方式与 eval
类似,但只能从字符串中生成文字 Python 数据:字符串、数字、元组、列表、字典、布尔值和 None .比 eval
单独使用要安全得多。
如果你真的想要一个列表而不是字符串中的一个元组:
>>> list(literal_eval(s))
[('x',), ('y',)]
如果您想避免导入库,这里有另一种方法:
[(k,) for k in tuple(s) if k.isalnum()]