Python 为什么索引的值总是零;变量“U名称”;返回多个结果?

Python 为什么索引的值总是零;变量“U名称”;返回多个结果?,python,for-loop,enumerate,Python,For Loop,Enumerate,我想根据一个文件计算每个正则表达式搜索的结果。我相信我正在填充一个列表,然后循环尝试获取计数器的值 for file in XDTS: data_tag_regex = re.compile(r'data_tag=\"(.*?)\"') if file.endswith('.xdt'): xdt_file = open(file, 'r') for line in xdt_file: variable_names = dat

我想根据一个文件计算每个正则表达式搜索的结果。我相信我正在填充一个列表,然后循环尝试获取计数器的值

for file in XDTS:
    data_tag_regex = re.compile(r'data_tag=\"(.*?)\"')
    if file.endswith('.xdt'):
        xdt_file = open(file, 'r')
        for line in xdt_file:
            variable_names = data_tag_regex.findall(line)
            for index, variable_name in enumerate(variable_names):
                print(index)
每行有一个匹配项,多行匹配项。您的
enumerate()
调用每次都从0开始,因为它是每一新行的新调用:

for line in xdt_file:
    # per line, find matches
    variable_names = data_tag_regex.findall(line)
    # for *this line only* print the indices, counting from 0
    for index, variable_name in enumerate(variable_names):
        print(index)
如果要在所有行中保留每个匹配的索引,则需要独立计算:

index = 0
for line in xdt_file:
    variable_names = data_tag_regex.findall(line)
    for variable_name in variable_names:
        index += 1
        print(index)

您是否可以提供测试此代码所需的其他内容?例如,正在生成所述问题的示例数据?是否可以添加的示例行以应用此正则表达式?您希望从哪个输出中获得比示例行更多的输出?您可能希望包含一些示例数据…您不需要转义
在正则表达式中。是否可能最后一个for总是遍历一个1长度的变量\u name值?i、 e.前两个for循环可能有多个值要迭代,但最后一个循环总是只有一个值(因此导致索引为0)。是的,我就是这么做的。我想我得到的是所有匹配项,不是每行,然后回来删除这个问题,但堆栈溢出似乎非常快……如果一次读取所有行,然后运行正则表达式,是否会更干净、更快或更好?@MattRalston:从内存的角度看,不是这样。给定一个大小合理的文件,我会逐行解析它。