讀取csv資料結果包含「 t」的問題

2021-10-01 18:25:32 字數 4721 閱讀 8286

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...