【发布时间】:2017-02-05 13:06:40
【问题描述】:
我需要从不同的文本文件中提取(大量)信息。 我想知道是否有比以下更短更有效的方法:
第一部分:(N行)
N1 = re.compile(r'')
N2 = re.compile(r'')
.
Nn = re.compile(r'')
第二部分:(2N 行)
with open(filename) as f:
for line in f:
if N1.match(line):
var1 = N1.match(line).group(x).strip()
elif N2.match(line):
var2 = N1.match(line).group(x).strip()
elif Nn.match(line):
varn = Nn
您是否建议将 re.compile 变量(第 1 部分)与第 2 部分分开。在这种情况下,你们使用什么?也许是一个将正则表达式作为参数传递的函数?并且每次都调用它。
在我的例子中,N 是 30,这意味着我有 90 行来提供字典,但逻辑很少,或者根本没有逻辑。
【问题讨论】:
-
一般来说,如果你想要
n的东西,使用list。 -
提取出来的数据会存储在列表和字典中,但是为什么要在提取之前使用列表呢?
-
...因为您想要的东西比定义
n用单独名称编译的正则表达式更短、更高效? -
他的意思是可能使用类似 [re.compile(r''), re.compile(r''), re.compile(r'')] 而不是 N1 N2 N3然后你可以在 f: for r in regexes 中做 for lines
-
你能不能让你的问题更具体一点,不那么笼统?当不清楚(a)你想要匹配什么样的东西,(b)正则表达式有何不同,(c)你要对匹配做什么,(d)分开的目的是什么时,真的很难提出任何建议变量服务,(e)以及为什么这些表达式显然是另一个表达式所独有的(因为您只使用
elifs)。
标签: python regex data-extraction