gpt4 book ai didi

Python - 如何找到文件中的行位置,并在该行周围移动?

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

我正在使用以下方法解析大型数据文件:

reader = csv.DictReader(open('Sourcefile.txt','rt'), delimiter = '\t')
for row in reader:
etc
etc

解析效果很好但是我正在对数据执行计算,这需要我直接访问我所在的行、之前的行,或者跳过前面的 10 行。

我不知道如何获取我所在文件的实际行号,以及如何移动到文件中的其他行(例如:“Current_Line”+ 10)并从该点开始访问数据在文件中转发。

解决方案是将整个文件读入一个数组,而不是试图在文件中来回移动吗?我预计此文件超过 160MB,并假设在文件中来回移动内存效率最高。

最佳答案

使用 csvreader.next() 转到下一行。要向前移动 10 行,请调用它 10 次或使用范围内循环。

使用csvreader.line_num 获取当前行号。 感谢“Steven Rumbalski”指出,如果您的数据不包含换行符 (0x0A),您只能相信这一点。

要获取当前行之前的行,simpy 将最后一行缓存在变量中。

更多信息在这里:https://docs.python.org/2/library/csv.html

编辑

一个小例子: 导入 csv

reader = csv.DictReader(open('Sourcefile.txt','rt'), delimiter = '\t')

last_line = None

for row in reader:
print("Current row: %s (line %d)" % (row, reader.line_num));

# do Sth with the row

last_line = row
if reader.line_num % 10 == 0:
print("Modulo 10! Skipping 5 lines");
try:
for i in range(5):
last_line = reader.next()
except: # File is finished
break

这完全一样,但在我看来它是更好的代码: 导入 csv

reader = csv.DictReader(open('Sourcefile.txt','rt'), delimiter = '\t')

last_line = None

skip = 0
for row in reader:
if skip > 0:
skip -= 1
continue;

print("Current row: %s (line %d)" % (row, reader.line_num));

# do Sth with the row

last_line = row
if reader.line_num % 10 == 0:
print("Modulo 10! Skipping 5 lines");
skip += 5
print("File is done!")

关于Python - 如何找到文件中的行位置,并在该行周围移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019935/

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