我试图通过简单地改变模式中的索引(例如,L1,L2 ......)而不是创建多个模式来重用多个模式但我不知道如何用“i”替换模式中的变量”。我的程序是检查每行中的三个模式,如果有任何字符串匹配三个模式之一,则增加计数。 我从下面开始,但无法完成。任何人都知道如何使这项工作? 感谢,
patterns = ['Test\(L{0}\)ABCDE'.format,
'Test\(L{0}\)EFIGH'.format,
'Test\(L{0}\)IJKLM'.format,
]
for i in range(1,20):
output_format = "|".join(pattern)
count = sum(1 for line in myfile if re.search(output_format, %i, line))
答案 0 :(得分:0)
您需要模式列表中的字符串,而不是对其format
方法的引用,然后您希望在每个字符串上调用format方法,将迭代变量传递给该方法。未经测试的代码:
patterns = ['Test\(L{0}\)ABCDE',
'Test\(L{0}\)EFIGH',
'Test\(L{0}\)IJKLM',
]
for i in range(1,20):
expression = "|".join(pattern.format(i) for pattern in patterns)
count = sum(1 for line in myfile if re.search(expression, line))