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:从内存的角度看,不是这样。给定一个大小合理的文件,我会逐行解析它。