path=r”C:\Python\RF Stable\RF min.csv”
import csv
with open(“RF min.csv” ,”r”,newline=”) as f:
raw=csv.reader(f)
for r in raw:
print(r)
raw = csv.reader(f)
print(“直接print(raw):”,raw)
會出現:
<_csv.reader object at 0x0000019B43174C40>
而非2D list內容
需要多一個
for r in raw的迴圈
才能印出內容
raw = csv.reader(f)
print(“直接print(raw):”,raw)
會出現:
<_csv.reader object at 0x0000019B43174C40>
而非2D list內容
需要多一個
for r in raw的迴圈
L.append(r)
L才是我們想要的2D list
用一般的逐列讀取
for line in f:
lst = line.strip().split(“,”)
raw.append(lst)
多一個lenline的list,
收集每一列的長度
會發現資料中有一列長度只有1
需要把那一列長度1的資料remove
才能繼續處理後續
csv檔:
放大程式碼:
這段程式碼在Spyder可以正常執行
Visual Studio卻會出現錯誤:
Traceback (most recent call last):
File “c:\Python\RF Stable\csv.py”, line 2, in <module>
import csv
File “c:\Python\RF Stable\csv.py”, line 4, in <module>
raw = csv.reader(f,delimiter=”,”,quotechar=None,quoting=csv.QUOTE_NONE)
AttributeError: partially initialized module ‘csv’ has no attribute ‘reader’ (most likely due to a circular import)
原因是我把檔名
命名為csv.py
跟import csv的csv撞名
只要改個名字
就可以正常執行
import csv
with open(“score.csv”, “r”, encoding=”utf-8″) as f:
score = [k for k in csv.reader(f)]
print(score)
with open(“scoreOut.csv”,”w”,newline=””) as f2:
csv.writer(f2).writerows(score)
輸出結果:
[[’89’, ’65’, ’31’], [’75’, ’65’, ’55’], [’61’, ’75’, ’79’], [’47’, ’75’, ’80’]]
scoreOut.csv: