gpt4 book ai didi

python - 当到达文件中的数字时跳过一些行

转载 作者:行者123 更新时间:2023-11-28 22:18:18 26 4
gpt4 key购买 nike

我有一个文件如下:

Col1 Col2
A 1
A 1
A 1
A 2
A 1
A 1
A 3
A 1
A 1
A 1

我想用 Python 逐行读取文件。当我到达 Col2 > 1 的行时,我想跳过等于 Col2 的行数。在这里,当到达 A 2 时,我想跳过接下来的 2 行,当我到达 Col2 等于 3 时,我想跳过接下来的 3 行,依此类推。

如果我读取列表中的整个文件,我可以执行以下操作:

k = [1, 1, 1, 2, 1, 1, 3, 1, 1, 1]
i = []
for element in k:
if element > 1:
h = k.index(element)
i.append(h)
for j in range(1,element+1):
i.append(h+j)

new_list = []
for d in range(1, len(k)+1):
if not d in i:
new_list.append(k[d-1])

但我的实际文件是 7.2 GB,所以我认为逐行读取它可以提高内存效率。我如何才能在 Python 中实现它?

最佳答案

您可以使用带有生成器函数的csv 模块。然后只需遍历生成器中的项目即可。

def gen_rows(file):
with open(file, 'r') as fin:
reader = csv.reader(mystr, delimiter=' ')
headers = next(reader)

for col1, col2 in reader:
num = int(col2)
if num > 1:
for i in range(num):
next(reader)
yield col1, col2

for i in gen_rows('file.csv'):
print(i)

('A', '1')
('A', '1')
('A', '1')
('A', '2')
('A', '3')

关于python - 当到达文件中的数字时跳过一些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50625680/

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