gpt4 book ai didi

仅关于大规模迭代的 Python 列表索引超出范围

转载 作者:太空宇宙 更新时间:2023-11-04 10:44:38 24 4
gpt4 key购买 nike

我有一个很大的文本文件,
其中每一行都根据定义语法(使用正则表达式处理)。

我收到以下错误:

remainder = '{} {} '.format(*pieces[-1])
IndexError: list index out of range

关于这段代码:

def open_delimited(filename, args):
with open(filename, args, encoding="UTF-16") as infile:
chunksize = 10000
remainder = ''
for chunk in iter(lambda: infile.read(chunksize), ''):
pieces = re.findall(r"(\d+)\s+(\d+_\d+)\s+(((post)\s+1)|((\d+_\d+_\d+)\s+(comment)\s+2))(.+)(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2})(.*)", remainder + chunk, re.IGNORECASE)
for piece in pieces[:-1]:
yield piece
remainder = '{} {} '.format(*pieces[-1])
if remainder:
yield remainder


filename = 'data/AllData_2000001_3000000.txt'

for chunk in open_delimited(filename, 'r'):
for j in range(len(chunk)):
print(chunk[j])

当我限制迭代次数时,代码可以正常工作。

i = 0
for chunk in open_delimited(filename, 'r'):
if (i <= 1000):
for j in range(len(chunk)):
print(chunk[j])
else:
break
i += 1

最佳答案

如果正则表达式在 block 中找不到一 block ,它将返回一个空列表,因此会返回错误。

>>> pieces = []
>>> pieces[-1]

IndexError: list index out of range

如果您希望在每个 block 中找到片段,那么下一个问题是为什么您没有在特定 block 中找到片段。我会继续调试如下

try:
remainder = '{} {} '.format(*pieces[-1])
except IndexError:
print pieces
print chunk
raise

关于仅关于大规模迭代的 Python 列表索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18238235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com