python從文字中提取每一行的特定字串輸出到csv檔案

時間 2021-05-07 20:00:36

1樓:慎雋雅

假設 你的檔名叫t.txt在當前目錄下,輸出的csv叫csv.txt也在當前目錄

**如下

import sys

import re

import csv

pattern=r'.*(numberlocation)/\.(numberlocationactivity).*\+(.*)ms'

cs=open('./csv.txt','w')csvw=csv.writer(cs)

f=open('./t.txt')

for line in f:

m=re.match(pattern,line)csvw.writerow(m.group(1,2,3))f.close()

cs.close()

2樓:

#!/usr/bin/python

# coding: utf-8

## filename: regextester.py

# author: tim wang

# date: dec., 2013

import re

context = """12-06 14:50:23.

600: i/activitymanager(605): displayed com.

suning.numberlocation/.numberlocationactivity:

 +125ms

12-06 14:50:52.

581: i/activitymanager(605): displayed com.

suning.numberlocation/.numberlocationactivity:

 +126ms

12-06 14:51:21.

391: i/activitymanager(605): displayed com.

suning.numberlocation/.numberlocationactivity:

 +108ms

12-06 14:51:50.

652: i/activitymanager(605): displayed com.

suning.numberlocation/.numberlocationactivity:

 +121ms"""

patt = re.compile(r"""

(?p\d-\d\s\d:\d:\d\.\d)

.*(?<=numberlocationactivity:\s\+)(?p\d+)ms

""", re.i|re.u|re.x)

outputfmt = "numberlocation     numberlocationactivity   %(numberlocation)s"

for ln in context.splitlines():

print outputfmt % patt.match(ln).groupdict()

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

3樓:天天不看

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)

得到:[,,,

]如果我們想用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檔案某一列的每一行文字進行分詞後再寫到該檔案另一列怎麼做

4樓:天天不看

# -*- coding: utf8 -*-

import csv

l = [['1', 'wonderful spam'],['2', 'lovely spam']]

#模擬資料寫入一個csv

with open('eggs.csv', 'w', newline='') as csvfile:

spamwriter = csv.writer(csvfile, delimiter=',',

quotechar='"', quoting=csv.quote_minimal)

for row in l:

spamwriter.writerow(row)

#從檔案讀取

l=with open('eggs.csv', newline='') as csvfile:

spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')

for row in spamreader:

l = l + [row]

#把兩列拼接增加為第三列寫回到檔案

with open('eggs.csv', 'w', newline='') as csvfile:

spamwriter = csv.writer(csvfile, delimiter=',',

quotechar='"', quoting=csv.quote_minimal)

for row in l:

print(row)

spamwriter.writerow(row + [row[0]+row[1]])

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

5樓:大漠鳳蕭蕭

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

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

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

6樓:

#!/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.compile(

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"轉成整數

如何從多個檔案中提取想要的文字到EXCEL裡

yesyes科 1 開啟excel檔案,輸入資料,其中a列為字串格式。2 從字串的左側取數 在b3單元格中輸入公式 left a3,4 即提取左側的4個字元。3 按回車鍵後,提取得出結果。4 接著從字串的中間取數,在c3單元格中輸入公式 mid a3,5,2 即從中間第5位起提取2位字元。5 按回車...

solidworks中怎麼從裝配體中提取零件

將裝配體存檔案另存為零件 prt 檔案 就能刪掉不需要的零件只留下目標零件了 solidworks如何將裝配體中的零件分離出來?10 這是啥時候的問題?你只要把裝配體另存為igs檔案。點選 項中的裝配體層次關係。就能儲存單獨的檔案了。 用solidworks開啟時,開啟step格式,選中檔案,選項,...

從碘水中提取碘單質有哪些方法,從碘水中萃取碘的實驗步驟,現象及原理。

從碘水中提取碘單質的實驗流程 分液應用於不互溶的兩種物質上 而碘溶於水,故分液的方法並不能得到碘單質。碘作為非極性單質分子,在水中溶解度小,濃度低,不易提取 在有機溶劑中溶解度大,易於濃縮 提取,所以必然要用有機溶劑將其萃取濃縮 分液.萃取濃縮後獲得的高濃度碘溶液要變為碘單質,想到蒸餾的方法.但考慮...