在python中打印两个不同列表的相同索引

时间:2012-10-07 14:56:32

标签: python list for-loop

我有一个巨大的字符串,我已经创建了一个名为'found'的字符串中所有匹配模式的列表。我还创建了一个名为“位置”的所有模式的列表。现在我想打印出找到的模式及其相应的位置,所有这些都在一行中,由一个标签分隔,但我在循环中被绊倒了。这是我最近的尝试:

for i in found:
    print i + '\t' + locations['i']

但我显然得到了一个错误。我可以打印它来打印位置或图案,或者一个或另一个,但我不太确定如何将它们全部放在同一条线上。

编辑:找到变量=字符串列表(在整个字符串中找到的模式)和位置=使用re.finditer找到的所述模式的位置列表

eitehr方式,zip()完全满足我的需求。感谢。

4 个答案:

答案 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]