![](/img/trans.png)
[英]Writing Python's List or Dictionary into CSV file (Row containing More than One Column)
[英]Skipping more than one row in Python csv
我正在連接到API以獲取一些數據。 輸出是包含多行標題和傳統單行標題的報告。
例:
1. Document Name: Test
2. Document Date: 8/7/2015
3. Document ID: 3804804
4. Document Author: Joe Blow
5.
6. Date, ID, Name, Age, Sex, Result
7. 8/7/2015, 2808380, Sara Jenkings, 33, F, 208.20
在示例中,我要跳過第1至5行,並將第6行的行寫為標題行,然后將所有其他行寫為普通行。
現在,我知道如何使用next(reader, None)
跳過一行,但是如果我知道要跳過的行數將始終像示例中的5行一樣,如何跳過多行呢?
我通常會使用數據庫來跳過行,但是我想看看是否可以讓Python正確保存數據而無需數據庫做更多的工作。
您可以使用itertools.islice ,將要從其開始寫入的行作為第二個參數傳遞,因此對於第6行為0的情況下,請使用5
, 如果stop為None,則迭代將繼續直到迭代器耗盡為止
import csv
from itertools import islice
with open("in.csv") as f, open("out.csv","w") as out:
r = csv.reader(islice(f, start=5,stop=None))
wr = csv.writer(out)
wr.writerows(r)
如果您按原樣保留行,則不一定需要csv模塊:
with open("in.csv") as f, open("out.csv","w") as out:
r = islice(f, 5 ,None)
out.writelines(r)
您可以在for循環中添加一個計數器和一個if語句。
count = 0
for line in opened_file:
if count < 5:
count += 1
continue
#Parse lines
使用列表推導跳過5個標題行:
import csv
nheaderlines = 5
with open(path + file) as csvfile:
reader = csv.DictReader(csvfile)
[next(reader, None) for item in range(nheaderlines)]
for row in reader:
print(row)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.