我有一个巨大的字符串,我已经创建了一个名为'found'的字符串中所有匹配模式的列表。我还创建了一个名为“位置”的所有模式的列表。现在我想打印出找到的模式及其相应的位置,所有这些都在一行中,由一个标签分隔,但我在循环中被绊倒了。这是我最近的尝试:
for i in found:
print i + '\t' + locations['i']
但我显然得到了一个错误。我可以打印它来打印位置或图案,或者一个或另一个,但我不太确定如何将它们全部放在同一条线上。
编辑:找到变量=字符串列表(在整个字符串中找到的模式)和位置=使用re.finditer找到的所述模式的位置列表
eitehr方式,zip()完全满足我的需求。感谢。
答案 0 :(得分:3)
尝试zip()
:
for i,j in zip(found,locations):
print "\t".join((i,str(j)))
答案 1 :(得分:0)
要通过索引访问列表,需要传递一个整数; 'i'
是一个字符,而不是您希望在i
中找到的整数。所以:
for i in found:
print i + '\t' + locations[i]
答案 2 :(得分:0)
也许enumerate()
正是您所寻找的:
for i, pattern in enumerate(found):
print pattern + '\t' + locations[i]
答案 3 :(得分:0)
您的代码假定只有一个匹配项。要查找和打印所有匹配项,使用re
模块是有效的。
import re
patterns = ['test', 'is', 'a', 'jest']
txt = 'This test is just a test, not a jest'
for p in patterns:
pos = [m.start() for m in re.finditer(p, txt)]
if len(pos):
print '\t'.join((p, str(pos)))
打印:
test [5, 20]
is [2, 10]
a [18, 30]
jest [32]