python對多個csv檔案裡提取指定列彙總到新生成的csv檔案

2021-05-22 09:17:06 字數 5862 閱讀 8895

1樓:大漠鳳蕭蕭

csv 是可以直接當文字直接讀的,他的格式是一行由若干列逗號隔開的

和文字檔案一樣的讀到csv後,用逗號分隔列,然後將您需要的那一列寫到新的檔案裡就可以了

只提供思路,我就不寫**了,可能會用有 open split readline

2樓:

#!/usr/bin/env python

# coding: utf-8

import os

import re

def parserln(ln, patt):

"""用

給定的正規表示式解析行"""

matched = patt.match(ln)

if matched:

return matched.groupdict()

def getdata(filename, parser, callback=none):

"""用指定的解析方法parser解析指定檔案,

用callback進行資料加工過的資料列表

"""with open(filename, 'rt') as handle:

return map(

callback,

filter(none, map(parser, handle))

)def storage(filename, dataserial, spliter=','):

"""將資料序列按行儲存到指定檔案,

每一序列元素間用指定的字元分割"""

with open(filename, 'wt') as handle:

handle.writelines([

"%s\n" % (spliter.join(map(str, item)))

for item in dataserial

])if __name__ == "__main__":

patt = re.***pile(

r"""^

(?p\d+),

(?p\d+),

(?p\d+)

\s*$""",

re.i | re.u | re.x)

datapath = 'datasource'

# datasource下所有存在"usage.csv"檔案的子目錄

subpaths = [

os.path.join(datapath, path)

for path in os.listdir(datapath)

if (os.path.isdir(os.path.join(datapath, path))

and os.path.exists(

os.path.join(datapath, path, "usage.txt")))]

storage(

'store.csv',

zip(*map(

lambda path: getdata(

os.path.join(path, "usage.csv"),

# 解析方法為用patt解析行

parser=lambda ln: parserln(ln, patt),

# 資料加工方法是取出"amount"轉成整數

python 讀取多個csv檔案中某一列,並生成一個新csv檔案

3樓:匿名使用者

csv檔案應該是用逗號分隔得才對,否則怎麼算作是csv檔案。樓主你開玩笑吧。否則你這只是一個普通的文字檔案。

如果是真正的csv檔案,我只說一點,python裡面有csv模組,專門處理csv檔案。如果是空格分割應該也可以,建議你,看一下python的csv模組的api,蠻簡單的**,其實如果不用的話自己寫也可以。不是很複雜。

**片段如下:

def deal_file(file_in, file_out)with open(file_in, 'r') as f_in:

with open(file_out, 'w') as f_out:

for line in f_in:

f_out.write(line.split(' ')[2] + '\n')

之後你可以將所有的輸入檔案放到一個列表裡面,進行迭代呼叫這個函式就可以了。

4樓:匿名使用者

參考方法如下:

逐行處理:

for line in open("samples/sample.csv"):

title, year, director = line.split(",") //以「,」號為分割,按逗號將資料分成三部分;

print year, title

使用csv模組處理:

import csv

reader = csv.reader(open("samples\sample.csv"))

for title, year, director in reader:

print year, title

改變分隔符;

求python大神指導,一個csv檔案,把其中每一列的資料提取出來單獨儲存為一個csv檔案

5樓:天天不看

csv是***ma-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)

得到:[,,,

]如果我們想用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或者dat檔案,並儲存為二維陣列

和普通文 bai件一樣讀du取。csv中文zhi件資料dao項有逗號劃回分開答。infile open data.csv r for line in infile data line.rstrip split print data numpy.loadtxt 即可 python 讀取多個csv檔案中...

python如何讀取csv指定內容所在行的第二列內容

先把 來資料轉化成源dataframe形式 import pandas as pd data pd.dataframe data,columns loc value 再把對應行的資料取出來 data value data loc 地區3 從執行效 bai率考慮du,zhi 用pandas庫比較好da...

python如何讀取csv某列XX行資料儲存為列表

list1 df df.columns 2 df.columns 0 list2 df df.columns 2 df.columns 1 python如何讀取csv指定內容所在行的第二列內容?先把 來資料轉化成源dataframe形式 import pandas as pd data pd.dat...