1

出于某种原因,我有一个描述正则表达式列表的文本文件

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”的行并使用一些花哨的函数将它们转换为那里描述的列表吗?

4

2 回答 2

1

提取想要的行(显然您已经完成了此操作),将它们拆分为 '=' 字符,然后将第二部分传递给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}$']
>>> 
于 2020-04-09T13:14:01.337 回答
0

您可以使用eval将字符串解析为 python 对象:

items = eval('[1,2,4]')
print(type(items),len(items), items) # output: <class 'list'> 3 [1, 2, 4]

于 2020-04-09T13:08:37.913 回答