Python 在每行中查找多个正则表达式,如果其中一个正则表达式不';不匹配
我有一个变量列表:Python 在每行中查找多个正则表达式,如果其中一个正则表达式不';不匹配,python,regex,Python,Regex,我有一个变量列表: variables = ['VariableA', 'VariableB','VariableC'] 我要逐行搜索 ifile = open("temp.txt",'r') d = {} match = zeros(len(variables)) for line in ifile: emptyCells=0 for i in range(len(variables)): regex = r'('+variables[i]+r')[:|=
variables = ['VariableA', 'VariableB','VariableC']
我要逐行搜索
ifile = open("temp.txt",'r')
d = {}
match = zeros(len(variables))
for line in ifile:
emptyCells=0
for i in range(len(variables)):
regex = r'('+variables[i]+r')[:|=|\(](-?\d+(?:\.\d+)?)(?:\))?'
pattern_variable = re.compile(regex)
match[i] = re.findall(pattern_variable, line)
if match[j] == []:
emptyCells = emptyCells+1
if emptyCells == 0:
for k, v in match[j]:
d.setdefault(k, []).append(v)
要求是我只保留所有正则表达式匹配的行
我想收集字典中每个变量的所有结果,其中变量名是键,值成为所有匹配项的列表
提供的代码只是我到目前为止所发现的,还不能很好地工作…您能否编辑您的问题以给出源文件的示例,以便我们可以针对它测试我们的解决方案 不管怎样,这里有一个快速破解:
from collections import defaultdict
import re
variables = ['VariableA', 'VariableB', 'VariableC']
regexes = [re.compile(r'(%s)[:|=|\(](-?\d+(?:\.\d+)?)(?:\))?' % (variable,))
for variable in variables]
d = defaultdict(list)
with open("temp.txt") as f:
for line in f:
results = [regex.search(line) for regex in regexes]
if all(results):
for m in results:
k, v = m.groups()
d[k].append(v)
print d
你可以使用:cat file | grep regexp1 | grep regexp2 |…它应该在windows环境下工作,所以依赖unix实用程序不是很好,我想…你的代码引用了一个变量
j
,而没有定义j
。j
是在别处定义的还是应该是i
?请澄清。这是完美的!!非常好的解决方案,谢谢!源文件中的典型行:VariableA(2)00:29:10 VariableB=0.221 VariableC:12.600 sensI=0.000