攝影或3C

Python 如何讀取csv檔? import csv ; raw=csv.reader(f) ; Visual Studio Code(VScode)為什麼會出現錯誤 module ‘csv’ has no attribute ‘reader’ ?

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:
儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡