通过字面上使用字符串创建列表
create a list by literally using a string
出于某种原因,我有一个描述正则表达式列表的文本文件
RegexRemove = [ 'OC1.*','OC2.*','-UC.*','EG[0-9]{4,6}.*','_t[0-9]{0,2}\.[0-9]{0,2}$' ]
RegexReplace = [ ['LA.*','LA'],['IF.*', 'IF'],['BH.*', 'BH'],['DP.*', 'DP'] ]
我喜欢将行作为字符串读入并将它们转换为文本文件中描述的列表。
该行类似于定义列表的源代码,但它们是更大的文本文件的一部分,无法读取和解释为 python。
我试图通过替换和拆分字符串来转换它们,但我总是 运行 遇到麻烦,因为逗号用作拆分的分隔符并且也是正则表达式的一部分。
我可以只读入包含 "Regex" 的行并使用一些奇特的函数将它们转换为那里描述的列表吗?
您可以使用 eval
将字符串解析为 python 个对象:
items = eval('[1,2,4]')
print(type(items),len(items), items) # output: <class 'list'> 3 [1, 2, 4]
提取想要的行(显然你已经完成了这个),将它们拆分到 '=' 字符上,然后将第二部分传递给 ast.literal_eval()
:
>>> import ast
>>> s = "[ 'OC1.*','OC2.*','-UC.*','EG[0-9]{4,6}.*','_t[0-9]{0,2}\.[0-9]{0,2}$' ]"
>>> ast.literal_eval(s)
['OC1.*', 'OC2.*', '-UC.*', 'EG[0-9]{4,6}.*', '_t[0-9]{0,2}\.[0-9]{0,2}$']
>>>
出于某种原因,我有一个描述正则表达式列表的文本文件
RegexRemove = [ 'OC1.*','OC2.*','-UC.*','EG[0-9]{4,6}.*','_t[0-9]{0,2}\.[0-9]{0,2}$' ]
RegexReplace = [ ['LA.*','LA'],['IF.*', 'IF'],['BH.*', 'BH'],['DP.*', 'DP'] ]
我喜欢将行作为字符串读入并将它们转换为文本文件中描述的列表。
该行类似于定义列表的源代码,但它们是更大的文本文件的一部分,无法读取和解释为 python。
我试图通过替换和拆分字符串来转换它们,但我总是 运行 遇到麻烦,因为逗号用作拆分的分隔符并且也是正则表达式的一部分。 我可以只读入包含 "Regex" 的行并使用一些奇特的函数将它们转换为那里描述的列表吗?
您可以使用 eval
将字符串解析为 python 个对象:
items = eval('[1,2,4]')
print(type(items),len(items), items) # output: <class 'list'> 3 [1, 2, 4]
提取想要的行(显然你已经完成了这个),将它们拆分到 '=' 字符上,然后将第二部分传递给 ast.literal_eval()
:
>>> import ast
>>> s = "[ 'OC1.*','OC2.*','-UC.*','EG[0-9]{4,6}.*','_t[0-9]{0,2}\.[0-9]{0,2}$' ]"
>>> ast.literal_eval(s)
['OC1.*', 'OC2.*', '-UC.*', 'EG[0-9]{4,6}.*', '_t[0-9]{0,2}\.[0-9]{0,2}$']
>>>