1. 程式人生 > >python讀取各種檔案資料解析

python讀取各種檔案資料解析

python讀取.txt(.log)檔案 、.xml 檔案 、excel檔案資料,並將資料型別轉換為需要的型別,新增到list中詳解

1.讀取文字檔案資料(.txt結尾的檔案)或日誌檔案(.log結尾的檔案)

以下是檔案中的內容,檔名為data.txt(與data.log內容相同),且處理方式相同,呼叫時改個名稱就可以了:

這裡寫圖片描述

以下是python實現程式碼:

# -*- coding:gb2312 -*-
import json
def read_txt_high(filename):
    with open(filename, 'r') as file_to_read:
        list0 = [] #檔案中的第一列資料
list1 = [] #檔案中的第二列資料 while True: lines = file_to_read.readline() # 整行讀取資料 if not lines: break item = [i for i in lines.split()] data0 = json.loads(item[0])#每行第一個值 data1 = json.loads(item[1])#每行第二個值 list0.append(data0) list1.append(data1) return
list0,list1

list0與list1分別為文件中的第一列資料與第二列資料。執行若是文字檔案(.txt結尾的檔案)輸入以下:

aa,bb = read_txt_high('data.txt')
print aa
print bb

若是日誌檔案(.log結尾的檔案),輸入以下:

aa,bb = read_txt_high('data.log')
print aa
print bb

執行結果如下:

這裡寫圖片描述

2.讀取.xml結尾的檔案

XML檔案的名稱為abc.xml, 內容如下圖所示:

這裡寫圖片描述

以下是實現程式碼:

# -*- coding:gb2312 -*-
# coding = utf-8
from pylab import * import xml.dom.minidom def read_xml(): dom = xml.dom.minidom.parse('abc.xml')#開啟xml文件 cc=dom.getElementsByTagName('caption') list_str = [] #字串 for item in cc: list_str.append(str(item.firstChild.data)) bb = dom.getElementsByTagName('maxid') list_fig = [] for item in bb: list_fig.append(item.firstChild.data) su = list_fig[0].encode("gbk") list_fig2 = su.split(",") list_fig_num = [] for i in list_fig2: list_fig_num.append(int(i)) ee = dom.getElementsByTagName('time') list_tim = [] for item in ee: list_tim.append(item.firstChild.data) sg = list_tim[0].encode("gbk") list_time = sg.split(",") gg = dom.getElementsByTagName('font_size') g1 = [] for item in gg: g1.append(item.firstChild.data) su = g1[0].encode("gbk") return list_str,list_fig_num,list_time,su

呼叫此函式如下所示:

a,b,c,d = read_xml()
print a
print b
print c
print d

輸出結果如下圖所示:

這裡寫圖片描述

3.讀取excel檔案資料,並將其存入list列表中

excel表格中的資料如下圖所示,表格命名為data.xlsx:

這裡寫圖片描述

首先將ID列中的資料儲存到列表list_col中,實現程式碼如下所示:

# -*- coding: utf-8 -*-
import xlrd
import json

def read_ex_stop_PTline():
    # 開啟檔案
    workbook = xlrd.open_workbook(r'data.xlsx')
    sheet = workbook.sheet_by_name('PTline')
    list_col = []
    for i in range(1,sheet.nrows):
        c = sheet.cell(i,3).value
        list_col.append(int(c))
    print list_col

呼叫此函式,輸出結果如下:

這裡寫圖片描述

以下將linkIDsequence列資料存放到一個list中,即list_ele中,實現程式碼如下:

# -*- coding: utf-8 -*-
import xlrd
import json

def read_ex_stop_PTline():
    # 開啟檔案
    workbook = xlrd.open_workbook(r'data.xlsx')
    sheet = workbook.sheet_by_name('PTline')
    list_ele = [] #第八列的所有資料放入一個list中
    for i in range(1,sheet.nrows):
        c = sheet.cell(i, 8).value
        cc = json.loads(c) #第八列的每個單元格處理為一個list
        for j in range(len(cc)):
            list_ele.append(cc[j])
    print list_ele

呼叫函式read_ex_stop_PTline,輸出結果如下圖所示:

這裡寫圖片描述