当“variable\u names”返回多个结果时,为什么索引的值总是为零?

2024-04-20 00:49:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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)

Tags: 文件in列表fordataindexnamestag
1条回答
网友
1楼 · 发布于 2024-04-20 00:49:24

每行有一个匹配项,多行匹配项。您的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)

相关问题 更多 >