gpt4 book ai didi

python - 在 .csv 文件中多次使用 next()

转载 作者:行者123 更新时间:2023-12-01 06:41:31 24 4
gpt4 key购买 nike

我正在寻找一种多次调用 next() 的方法,直到到达 .csv 文件中的特定行(基本上跳过所有内容,直到我想要的行)。

import csv

file = 'weatherfileexample.csv'

with open(file) as f:
reader = csv.reader(f)
headings = next(f) # I want this to be row 12 where Year;Month;Day;Hour;Minute;.... is located

.csv 文件的内容如下所示。

LAT;;;;;47.0458;47.0458;47.0458;47.0458;47.0458;47.0458;47.0458LON;;;;;21.9183;21.9183;21.9183;21.9183;21.9183;21.9183;21.9183ASL;;;;;126.000;126.000;126.000;126.000;126.000;126.000;126.000CITY;;;;;Oradea;Oradea;Oradea;Oradea;Oradea;Oradea;OradeaDOMAIN;;;;;NEMS4;NEMS4;NEMS4;NEMS4;NEMS4;NEMS4;NEMS4LEVEL;;;;;2 m above gnd;10 m above gnd;10 m above gnd;2 m above gnd;2 m above gnd;10 m above gnd;10 m above gndNAME;;;;;Temperature;Wind Speed;Wind Direction;Temperature;Temperature;Wind Speed;Wind SpeedUNIT;;;;;°C;km/h;°;°C;°C;km/h;km/hAGGREGATION;;;;;daily mean;daily mean;daily mean;daily max;daily min;daily max;daily minUTC_OFFSET;;;;;2;2;2;2;2;2;2Year;Month;Day;Hour;Minute;Temperature daily mean [2 m above gnd];Wind Speed daily mean [10 m above gnd];Wind Direction daily mean [10 m above gnd];Temperature daily max [2 m above gnd];Temperature daily min [2 m above gnd];Wind Speed daily max [10 m above gnd];Wind Speed daily min [10 m above gnd]2019;12;14;00;00;6.74;13.75;170.60;11.32;3.43;21.14;2.602019;12;15;00;00;5.60;18.08;186.24;10.92;1.31;26.05;11.17

基本上我想要我的:

标题 = .csv 中突出显示的文本并从那里继续。

我知道我可以轻松编辑 .csv 文件,但我想知道如何操作。

我尝试过的事情

heading = next(f) * 12 # 12 是我需要的数据所在的位置,这只是将第一行乘以 12 倍

也尝试过:

heading = next(f, 12) # 这只是让我玩第一行。

非常感谢!

附注:Pastebin 加载时出现问题,因此我无法将 .csv 粘贴到那里。

最佳答案

itertools.dropwhile当满足给定条件时将跳过可迭代中的元素。将此与 enumerate 结合起来内置函数仅在到达特定行后才允许处理行。

在此代码中,删除行的条件是 enumerate 返回的行号小于 11(enumerate 默认使用从零开始计数)。

>>> import csv, itertools
>>> with open('weatherfileexample.csv', newline='') as f:
... reader = csv.reader(f, delimiter=';')
... # dropwhile returns the index from enumerate, which we can ignore, and
... # the row from csv.reader.
... for _, row in itertools.dropwhile(lambda x :x[0] < 11, enumerate(reader)):
... print(row)
...
['Year', 'Month', 'Day', 'Hour', 'Minute', 'Temperature daily mean [2 m above gnd]', 'Wind Speed daily mean [10 m above gnd]', 'Wind Direction daily mean [10 m above gnd]', 'Temperature daily max [2 m above gnd]', 'Temperature daily min [2 m above gnd]', 'Wind Speed daily max [10 m above gnd]', 'Wind Speed daily min [10 m above gnd]']
['2019', '12', '14', '00', '00', '6.74', '13.75', '170.60', '11.32', '3.43', '21.14', '2.60']
['2019', '12', '15', '00', '00', '5.60', '18.08', '186.24', '10.92', '1.31', '26.05', '11.17']

对于简单的情况,使用 dropwhile 是过多的,但如果条件复杂和/或性能是一个问题,则可能有用。

关于python - 在 .csv 文件中多次使用 next(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436715/

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