1、這個是我手動建立的csv文件,內容是從word複製貼上到**
2、這是我讀取資料用的**
import csv
file
=open
(r"c:\users\administrator\desktop\cs1.csv"
,"r"
,errors=
"ignore"
,encoding=
"utf-8"
)csv_file = csv.reader(
file
)for i in csv_file:
print
(i)file
.close(
)讀取的結果:
['id\t\tӣģ\t\tcode'][
'sp91fd79gfqu\t\tandorra la vella\t\tad'][
'thm3pvjhx1g2\tar ruways\tar ruways\t\tae '
]
有圖中結果可以看出,打出出來的結果不僅沒有了中文,並且每乙個列結果後面都多了乙個"\t"
3、在網上找了一些資料發現**是沒問題的,於是想著重新建立了乙個資料,並且手動輸入資料(表名為cs.csv,資料是一樣的)
**及結果如下:
import csv
file
=open
(r"c:\users\administrator\desktop\cs.csv"
,"r"
,errors=
"ignore"
)csv_file = csv.reader(
file
)for i in csv_file:
print
(i)file
.close(
)結果:
['城市id'
,'城市名'
,'城市名(英文)'
,'國家'
,'國家code '][
'sp91fd79gfqu'
,'安道爾'
,'andorra la vella'
,'安道爾'
,'ad '][
'thm3pvjhx1g2'
,'ar ruways'
,'ar ruways'
,'阿聯酋'
,'ae '
]
與上面的對比可以發現,最後乙個csv資料是手動重新建立的,「\t」的就沒有了,可能是word複製貼上進去導致的問題;然後中文顯示,取消了encoding="utf-8"之後,結果才正常顯示了中文,看到網上介紹還需要加上這個,不清楚原因
1、使用reader函式,接收乙個可迭代的物件(比如csv檔案),能返回乙個生成器,就可以從其中解析出csv的內容下面的**可以讀取csv的全部內容,以行為單位
import csv
path = r"c:\users\administrator\desktop\cs.csv"
file
=open
(path,
"r",errors=
"ignore"
)csv_file = csv.reader(
file
)for i in csv_file:
print
(i)file
.close(
)結果:
['城市id'
,'城市名'
,'城市名(英文)'
,'國家'
,'國家code '][
'sp91fd79gfqu'
,'安道爾'
,'andorra la vella'
,'安道爾'
,'ad '][
'thm3pvjhx1g2'
,'ar ruways'
,'ar ruways'
,'阿聯酋'
,'ae '
]
2、提取其中某一列可以使用下面的方法
import csv
path = r"c:\users\administrator\desktop\cs.csv"
file
=open
(path,errors=
"ignore"
)csv_file = csv.reader(
file
)column =
[row[0]
for row in csv_file]
print
(column)
file
.close(
)結果:
['城市id'
,'sp91fd79gfqu'
,'thm3pvjhx1g2'
]
3、讀取前多少行
path = r"c:\users\administrator\desktop\cs.csv"
efile =
open
(path)
#讀取csv檔案
ereader=csv.reader(efile)
#遍歷csv物件獲取資料,每一條資料都是乙個list,每一列是list中的乙個元素
#line_num是行號,這裡只讀取前100行
for row in ereader:
if ereader.line_num <=1:
print
('行 '
+str
(ereader.line_num)
+': '
+str
(row)
)#列印行號
else
:break
#關閉檔案
efile.close(
)結果:
行 1:
['城市id'
,'城市名'
,'城市名(英文)'
,'國家'
,'國家code '
]
4、 從列表寫入csv檔案,設定newline,否則兩行之間會空一行
import csv
l1 =
["1"
,"2"
,"3"
]path = r"c:\users\administrator\desktop\cs3.csv"
file
=open
(path,
'w',newline='')
writer = csv.writer(
file
)m =
len(l1)
for i in
range
(m):
writer.writerow(l1[i]
)file
.close(
)結果:
5、使用列表多行寫入
import csv
l1 =
['城市id'
,'城市名'
,'城市名(英文)'
,'國家'
,'國家code '
]l2 =
['sp91fd79gfqu'
,'安道爾'
,'andorra la vella'
,'安道爾'
,'ad '
]l3 =
['thm3pvjhx1g2'
,'ar ruways'
,'ar ruways'
,'阿聯酋'
,'ae '
]path = r"c:\users\administrator\desktop\cs4.csv"
with
open
(path,
'w',newline='')
as csvfile:
writer = csv.writer(csvfile)
# 寫入多行用writerows
writer.writerows(
[l1, l2, l3]
)結果:
6、從字典寫入csv檔案
import csv
path = r"c:\users\administrator\desktop\cs5.csv"
dic =
csvfile3 =
open
(path,
'w', newline='')
writer2 = csv.writer(csvfile3)
for key in dic:
writer2.writerow(
[key,dic[key]])
csvfile3.close(
)結果:
讀取csv檔案的資料
在處理資料時,我們往往發現csv檔案中的資料並不是我們都需要的。我們往往需要指定列 方法一 使用pandas讀取csv檔案的指定列 data pd.read csv data.csv usecols 0,1,2,3 usecols可以選取指定的列進行讀取 方法二 with open data.csv...
numpy 讀取csv格式的資料
從某種意義來說,csv檔案屬於txt檔案 csv檔案預設是以逗號分隔資料 用loadtxt讀取到的資料儲存形式類似二維陣列 data us video data numbers.csv 資料儲存路徑 t us np.loadtxt us file path,delimiter dtype int 實...
C 讀取CSV檔案中的資料
csv檔案是一種文字檔案,表示的是excel 資料,可以由辦公軟體excel輕鬆生成。為了在程式中使用excel資料,就需要以文字的形式操作excel資料,具體就是操作csv 資料。如下所示,include include include include include using namespac...