⑴ 求python大神指導,一個csv文件,把其中每一列的數據提取出來單獨保存為一個csv文件
csv是Comma-Separated Values的縮寫,是用文本文件形式儲存的表格數據,比如如下的表格:
就可以存儲為csv文件,文件內容是:
No.,Name,Age,Score
1,mayi,18,99
2,jack,21,89
3,tom,25,95
4,rain,19,80
假設上述csv文件保存為"test.csv"
1.讀文件
如何用Python像操作Excel一樣提取其中的一列,即一個欄位,利用Python自帶的csv模塊,有兩種方法可以實現:
第一種方法使用reader函數,接收一個可迭代的對象(比如csv文件),能返回一個生成器,就可以從其中解析出csv的內容:比如下面的代碼可以讀取csv的全部內容,以行為單位:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#讀
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.reader(f)
rows = [row for row in reader]
print(rows)
得到:
[['No.', 'Name', 'Age', 'Score'],
['1', 'mayi', '18', '99'],
['2', 'jack', '21', '89'],
['3', 'tom', '25', '95'],
['4', 'rain', '19', '80']]
要提取其中某一列,可以用下面的代碼:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#讀取第二列的內容
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.reader(f)
column = [row[1] for row in reader]
print(column)
得到:
['Name', 'mayi', 'jack', 'tom', 'rain']
注意從csv讀出的都是str類型。這種方法要事先知道列的序號,比如Name在第2列,而不能根據'Name'這個標題查詢。這時可以採用第二種方法:
第二種方法是使用DictReader,和reader函數類似,接收一個可迭代的對象,能返回一個生成器,但是返回的每一個單元格都放在一個字典的值內,而這個字典的鍵則是這個單元格的標題(即列頭)。用下面的代碼可以看到DictReader的結構:
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#讀
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.DictReader(f)
column = [row for row in reader]
print(column)
得到:
[{'No.': '1', 'Age': '18', 'Score': '99', 'Name': 'mayi'},
{'No.': '2', 'Age': '21', 'Score': '89', 'Name': 'jack'},
{'No.': '3', 'Age': '25', 'Score': '95', 'Name': 'tom'},
{'No.': '4', 'Age': '19', 'Score': '80', 'Name': 'rain'}]
如果我們想用DictReader讀取csv的某一列,就可以用列的標題查詢:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#讀取Name列的內容
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.DictReader(f)
column = [row['Name'] for row in reader]
print(column)
得到:
['mayi', 'jack', 'tom', 'rain']
2.寫文件
讀文件時,我們把csv文件讀入列表中,寫文件時會把列表中的元素寫入到csv文件中。
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#寫:追加
row = ['5', 'hanmeimei', '23', '81']
out = open("test.csv", "a", newline = "")
csv_writer = csv.writer(out, dialect = "excel")
csv_writer.writerow(row)
得到:
⑵ python 怎麼讀csv文件
CSV文件本質上就是文本文件,只不過每行的數據用逗號分隔。
所以你當成文本文件打開一行一行的讀然後拆分就可以了。
data=[]
withopen(r'd: empdemo.csv','r')ascsv_file:
forlineincsv_file:
data.append(line.strip().split(','))
print(data)
#另外Python標准庫里有個CSV模塊可以用。
importcsv
withopen(file_path,'rb')ascsv_file:
data=list(csv.reader(csv_file))[1:]#去掉首行的列名
還有就是可以用Pandas這個庫,dataframe有導入csv功能。
⑶ csv文件怎麼打開 使用Python讀取和寫入CSV文件
csv文件本質上是一個文本文件,具體的讀取和寫入方法有兩種:
直接對csv文件進行文件讀寫操作,每一行是一條記錄,按行讀取即可,簡單代碼如下:
with open("XXX.csv","wr") as f:
f.readline()
f.write()
2.使用第三方庫中的csv文件讀寫函數(本質上還是使用python的文件讀寫方法),如科學計算包pandas包中就有read_csv() to_csv()等函數,其他的一些第三方包里也有,可以自行查詢。
兩種方法各有優劣,第一種方法的優點就是可控性強,但是代碼相對較多,對於python2編碼處理很麻煩;第二種方法的優點是代碼量小,調用方便,處理編碼問題相對容易(在函數中加一個encoding參數即可),但是代碼內部比較復雜,可控性較差
⑷ python CSV 取值問題,新手,高分。
importcsv
Title=['Name','Age','Sex']
Name=['張三','李四','王二']
Age=['30','20','10']
Sex=['男','男','未知']
foriinrange(len(Title)):
list=[]
list.append(Name[i])
list.append(Age[i])
list.append(Sex[i])
print(list)#把這個寫入文件
我的版本是3.2的數據一直寫不進文件里,那我把list部分列印出來,你直接放在寫函數就可以了
⑸ Python中通過csv的writerow輸出的內容有多餘的空行
有可能是csv方言(dialect)的問題吧
csv方言參數中有一個 lineterminator,他的作用是定義csv結束一行的符號, 默認值是 '\r\n',如果有需要,可以嘗試修改
csv.register_dialect(lineterminator='\n',)
如果還是不行的話,有可能是你writerow的行前面多了換行符。
⑹ python中怎麼讀取csv文件
Python讀取CSV文件方法如下:
如下是一個CVS文件
使用Python打開CSV可以直接使用open函數打開,然後使用reader函數讀取內容,實現代碼如下:
運行結果如下:
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python中怎麼讀取csv文件的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
⑺ python怎麼將讀出來的文件放到列表
csv文件的讀取:
前期工作:在定義的py文件里邊創建一個excel文件,並另存為csv文件,放入三行數據,我這里是姓名+年齡(可以自己隨意寫)
首先我們要在python環境里導入csv板塊(測試小白的我喜歡用pycharm)
啦啦啦,開不開心,刺不刺激,純小白內容,謝謝大家的閱讀,歡迎留言交流,不要忘記我,我就是宇宙無敵的python小白白!
⑻ python怎麼列印csv文件中的內容
方法一:
import csv
f = open("C:\\Users\\windows10\\Desktop\\Python練習\\文本流\\raw循環合並.csv")
csv_reader = csv.reader(f,dialect='excel') # dialect='excel'為EXCEL編碼風格,否則無法讀取首行
for line in csv_reader:
print(line)123456
方法二:
import csv
f = open("C:\\Users\\windows10\\Desktop\\Python練習\\文本流\\raw循環合並.csv")
csv_reader = csv.reader(f) # 分割符號,默認,根據不同情況進行設置
data= []
for line in csv_reader:
data.append([x for x in line[:len(line)]]) #[x for x in line[:len(line)]]:形成一個行列表,對每行逐個字元串,進行追加; data.append():對添加一個行列表
print(data)
⑼ python中讀取csv文件
python中讀取csv方法有3種:
第一種,普通方法讀取(open函數打開,然後使用for循環讀取內容);
第二種,使用用CSV標准庫讀取;
第三種,用pandas模塊讀取。
⑽ python csv文件放到哪裡
使用Python的csv模塊
csv模塊中的函數
reader(csvfile, dialect='excel', **fmtparams)11
參數說明:
csvfile,必須是支持迭代(Iterator)的對象,可以是文件(file)對象或者列表(list)對象,如果是文件對
象,打開時需要加」b」標志參數。
dialect,編碼風格,默認為excel的風格,也就是用逗號(,)分隔,dialect方式也支持自定義,通過調用register_dialect方法來注冊,下文會提到。
fmtparam,格式化參數,用來覆蓋之前dialect對象指定的編碼風格。
載入文件代碼:
import csv
def loadCSVfile1():
list_file = []
with open('train.csv','rb') as csv_file:
all_lines=cvs.reader(csv_file)
for one_line in all_lines:
list_file.append(one_line)
list_file.remove(list_file[0])
arr_file = array(list_file)
label = arr_file[:, 0]
data = arr_file[:, 1:]
return data, label
載入csv核心部分還是
其中,『rb』中的r表示「讀」模式,因為是文件對象,所以加『b』。open()返回了一個文件對象
myFile,reader(myFile)只傳入了第一個參數,另外兩個參數採用預設值,即以excel風格讀入。reader()返回一個
reader對象all_lines,all_lines是一個list,當調用它的方法lines.next()時,會返回一個string。上面程序的效果是將csv
文件中的文本按行列印,每一行的元素都是以逗號分隔符』,』分隔得來。