我有一个元组的python列表,其形式如下:
[('Sc1 zu einer TZ-Maßnahme',
"{'entities': [(0, 3, 'Sc1 ', 'MISC')]}"),
(('Sce2 zu einer TZ-Maßnahme',
"{'entities': [(0, 4, 'Sc2', 'MISC')]}")
]
我只想去掉双引号:现在是:
"{'entities': [(0, 3, 'TZ-Sc1 ', 'MISC')]}"
应为:
{'entities': [(0, 3, 'TZ-Sc1 ', 'MISC')]}
我怎么能这么做? 夏里·蒂亚
您应该使用literal_eval
,而不是使用eval
import ast
sample = [
("Sc1 zu einer TZ-Maßnahme", "{'entities': [(0, 3, 'Sc1 ', 'MISC')]}"),
("Sce2 zu einer TZ-Maßnahme", "{'entities': [(0, 4, 'Sc2', 'MISC')]}"),
]
sample = [(x, ast.literal_eval(y)) for x, y in sample]
print(sample)
输出:
[
("Sc1 zu einer TZ-Maßnahme", {"entities": [(0, 3, "Sc1 ", "MISC")]}),
("Sce2 zu einer TZ-Maßnahme", {"entities": [(0, 4, "Sc2", "MISC")]}),
]
使用列表理解:
x = [(a, eval(b)) for a, b in x]
但是,只有在信任数据的情况下才使用eval,否则有人可能会把它的危险代码塞到脚本中。
您可以使用eval()
:
s = "{'entities': [(0, 3, 'TZ-Sc1 ', 'MISC')]}"
s = eval(s)
print(s)
输出:
{'entities': [(0, 3, 'TZ-Sc1 ', 'MISC')]}
当心! 对不受信任的输入使用eval
可能非常危险! 有人可以删除你所有的电脑文件使用一个可怕的命令!