提取xml文件信息中有用的数据,写入一个excel表格

功能描述

对原始数据为多个xml文件格式的文本,需要对其中的多个相同格式的文本信息进行提取,转化为方便处理的txt文件,或者csv文件,得到每一列为相同的数据信息,之后进行数据操作、信息挖掘等等

处理前的原始数据格式,如下图,注意:如果没有 root 根元素 这一层,需要手动添加进去

在这里插入图片描述

① 处理后的文件格式:(csv文件)
在这里插入图片描述

② 处理后的文件格式:(txt文件)
在这里插入图片描述

代码实现

① 代码


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/05/26
# @Author  : Kenn_Wu
# Purpose:  提取xml文件信息中有用的数据,转存为csv文件
  

import os
import glob
import pandas as pd
import xml.etree.ElementTree as ET

def  xml_to_csv(path):
    xml_list = []
    for xml_file in glob.glob(path + '*.xml'):
        print(xml_file)
        tree = ET.parse(xml_file)
        root = tree.getroot() # 到根元素层
        for member in root.findall('RECORD'):
            value = (member[5].text,
                    #  member[4].text,
                     member[6].text,
                     member[2].text,
                     member[7].text,
                     member[1].text

                     )  
            xml_list.append(value)
            # print(value)
    column_name = ['person_id', 'time','discuss', 'transmit', 'article']
    xml_df = pd.DataFrame(xml_list, columns=column_name)
    return xml_df

if __name__ == '__main__':
    xml_path = ('./') 
    xml_df = xml_to_csv(xml_path)
    xml_df.to_csv('data.csv', index=None)

print('Successfully converted xml to csv about data')



② 代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/05/26
# @Author  : Kenn_Wu
# Purpose:  从 xml文件中提取需要的数据,存为txt文本
#  You need to run this code under the txt folder


import os
import sys
import xml.etree.ElementTree as ET
import glob


def xml_to_txt(indir, outdir):
    
    Data = os.listdir(indir)
    file_save=outdir
    for i, file in enumerate(Data):
        f_w = open(file_save, 'a')
        open_file=indir+file
        print(open_file)
        in_file = open(open_file,'r',encoding='UTF-8')
        tree = ET.parse(in_file)
        root = tree.getroot()
        for obj in root.iter('RECORD'):
            id = obj.find('id').text  
            discuss=str(obj.find('discuss').text)
            origin=str(obj.find('origin').text)
            person_id=str(obj.find('person_id').text)
            time=str(obj.find('time').text)
            transmit=str(obj.find('transmit').text)
            article=str(obj.find('article').text)
            f_w.write(person_id + '\t' +  time + '\t' + transmit + '\t' + discuss + '\t'+article+ '\n')
            # f_w.write(article+ '\n')

indir = './Data_xml/'  # xml目录
outdir = './data1.txt'  # txt目录
xml_to_txt(indir, outdir)
print('Successfully converted xml_file to txt_file')

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐