提问者:小点点

在python中从元组列表中删除引号[重复]


我有一个元组的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')]}

我怎么能这么做? 夏里·蒂亚


共3个答案

匿名用户

您应该使用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可能非常危险! 有人可以删除你所有的电脑文件使用一个可怕的命令!