假设我们有这样的字符串:
string = "[{'Chr': 'chrX', 'Start': 107844640, 'End': 107844640}, {'Chr': 'chrY', 'Start': 107844641, 'End': 107844641}]"
目标是将该字符串转换为字典列表。
目前我只设法将字符串转换为列表:
str1 = string.replace(']','').replace('[','')
l = str1.replace('"','').split(",")
不幸的是,这会添加不需要的字符,例如 '""',我怎样才能摆脱不需要的字符并获得所需的结果?
答案 0 :(得分:2)
import ast
string = "[{'Chr': 'chrX', 'Start': 107844640, 'End': 107844640}, {'Chr': 'chrY', 'Start': 107844641, 'End': 107844641}]"
# ast.literal_eval(string)
for i in ast.literal_eval(string):
print(i)
答案 1 :(得分:1)
我的直接解决方案,正如 Mark Tolonen 所说,ast.literal_eval(string)
是最内置的 Pythonic 方式,无需使用 exec()
。
答案 2 :(得分:1)
好的,我也会跳上偷车,因为 OP 似乎没有完全得到“答案”。
所以,你基本上已经有了一个字典列表,只是在一个字符串类型的变量中定义。
使用 ast
从字符串和字典列表中获取文字值。
import ast
dict_string = "[{'Chr': 'chrX', 'Start': 107844640, 'End': 107844640}, {'Chr': 'chrY', 'Start': 107844641, 'End': 107844641}]"
dict_list = ast.literal_eval(dict_string)
# dict_list is now a list of dictionaries