我對 Python 相當陌生,但了解我需要幫助的是什么。
我正在嘗試匯入一個如下所示的 csv 檔案:
| 專案名稱 |
|---|
| 名稱 1,資訊 1 |
| 名稱 2,資訊 2 |
| 名稱 3,資訊 3 |
| 名稱 4,資訊 4 |
| 名稱 5,資訊 5 |
| a,b,c,d,e,f,g,h,i,j,k,l,m |
| a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1 |
| ... |
| ... |
| an,bn,cn,dn,en,fn,gn,hn,in,jn,jn,kn,ln,mn |
所有的逗號實際上都由 '\t' 分隔,我不知道如何處理?
所以總的來說,我想洗掉標題和接下來的 5 行,并且只處理檔案中第 7 行到第 n 行的資料以進行繪圖。
包含“a、b、c、d 等”的行需要是標題,并且它下面的資料應該相應地分成列。
我需要語法方面的幫助,并了解最有效的方法。任何幫助或指導將不勝感激!
謝謝。
uj5u.com熱心網友回復:
您可以使用 Python 的內置 CSV 模塊來處理此問題。
我的示例使用制表符分隔符讀取您的示例資料,丟棄前 6 行,并保存其余行以寫入新的逗號分隔檔案。
您首先需要打開檔案進行閱讀并創建一個 CSV閱讀器物件:
import csv
with open('input.csv', newline='') as f:
reader = csv.reader(f, delimiter='\t')
...
您可以通過幾種不同的方式遍歷閱讀器的行。
在您的情況下,要跳過多行,請next(reader)按順序呼叫多次,忽略它回傳的資料:
...
for i in range(1, 7):
next(reader) # manually advance reader / discard rows
...
您還可以使用標準 for 回圈迭代閱讀器的行。我正在創建all_rows串列來保存您真正關心的行:
...
all_rows = []
for row in reader:
all_rows.append(row)
...
對于標準的reader物件, headers沒有什么特別之處,它是否存在或具有任何特殊價值完全取決于你……對于讀者來說,它只是像其他任何一行一樣:
print(all_rows)
[
['a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h ', 'i' , 'j' , 'k' , 'l' , 'm'],
['a1', 'b1', 'c1', 'd1', 'e1', 'f1', 'g1', 'h1', 'i1', 'j1', 'k1', 'l1', 'm1'],
['an', 'bn', 'cn', 'dn', 'en', 'fn', 'gn', 'hn', 'in', 'jn', 'kn', 'ln', 'mn']
]
現在,您可以使用 做任何您需要的事情all_rows,將其提供給繪圖儀,或將其保存為清理后的 CSV:
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(all_rows)
這是CSV 模塊的官方檔案。這是一個很好的參考,可以提醒你它是如何作業的,一旦你掌握了它,但我認為對正在發生的事情有一個基本的了解并不是很好。
我已經撰寫了我自己的 CSV w/Python指南。我花了一點時間來討論更基本的事情,但這是我看到這里的人們被絆倒的簡單事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/423440.html
標籤:
