基本上,我需要将所有字符串格式的python列表结构自动转换为没有字符串格式的python列表结构。
string = "[a,[b,c,[d,e],f]"
a_list = [a,f]
如果只是这个简单的案例,我可以手工制作。但是我有超过 20000 个 txt 文件,其中包含我的语言中的所有动词变位,我需要将它们导入 python。
基本上,我需要将所有字符串格式的python列表结构自动转换为没有字符串格式的python列表结构。
string = "[a,[b,c,[d,e],f]"
a_list = [a,f]
如果只是这个简单的案例,我可以手工制作。但是我有超过 20000 个 txt 文件,其中包含我的语言中的所有动词变位,我需要将它们导入 python。
import ast
string= '[a,[b,c,[d,e],f]'
lists=ast.literal_eval(string)
来自文档:
安全地计算包含 Python 文字或容器显示的表达式节点或字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、字节、数字、元组、列表、字典、集合、布尔值和 None
。
我提出了以下解决方案,该解决方案基于标准库中的正则表达式包 re
。
import re
def string2list(string):
# add quotes around each character
s = re.sub(r'([a-z])',r'"\1"',string) # only for small characters
# execute the string as if it were a python command
return eval(s)
string = "[a,f]]"
s_list = string2list(string)
print(s_list)
print(s_list[1][-1])
输出
['a',['b','c',['d','e'],'f']]
f
我回答了您的问题的抽象,但是如果在您的真实应用程序中您需要替换比单个字符更复杂的内容,那么您需要找到一个更好的正则表达式......因为策略是相同的。
!您在语句中忘记了一个右括号:string = "[a,f]"
!