当前位置:   article > 正文

【pandas 小记】pandas 读写xml文件_pandas xml

pandas xml

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

def iter_records(records):
    """
    遍历每个节点的生成器
    :param records:
    :return:
    """
    for record in records:
        temp_dict = {}  # 存储节点key-value
        for var in record:
            temp_dict[var.attrib['var_name']] = var.text
        # 生成值,即每个节点的数据
        yield temp_dict


def read_xml(xmlFileName):
    """
    读取xml数据,返回df
    :param xmlFileName:
    :return:
    """
    with open(xmlFileName, 'r') as xml_file:
        tree = ET.parse(xml_file)
        # 访问根节点
        root = tree.getroot()
        # 从根节点开始遍历,返回df
        return pd.DataFrame(list(iter_records(root)))


def xml_encode(row):
    """
    将每行数据转换成xml
    :param row:
    :return:
    """
    # 输出<record>节点开始标签 ,名称可以根据实际需要修改
    xmlItem = ['  <record>']
    # 转换成xml格式
    for field in row.index:
        line = '  <var var_name="{0}">{1}</var>'.format(field, row[field])
        xmlItem.append(line)

    # 输出<record>节点结束标签
    xmlItem.append('  </record>')

    # 返回结果
    return '\n'.join(xmlItem)


def write_xml(xmlFileName, data):
    """
    将数据写入xml文件
    :param xmlFileName:
    :param data:
    :return:
    """
    with open(xmlFileName, 'w') as xmlfile:
        # 写头部
        xmlfile.write(
            '<?xml version="1.0" encoding="UTF-8"?>'
        )
        xmlfile.write('<records>\n')   # 名称可以根据实际需要修改

        # 写数据
        xmlfile.write(
            '\n'.join(data.apply(xml_encode, axis=1))
        )
        xmlfile.write('\n</records>')   # 名称可以根据实际需要修改


xml_filenane = r'E:\data\realEstate_trans.xml'
new_filename = r'E:\data\realEstate_trans_output.xml'
xml_df = read_xml(xml_filenane)    # 读取到df
print(xml_df)
# write_xml(new_filename, xml_df)  # 写入新xml文件

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/855932
推荐阅读
相关标签
  

闽ICP备14008679号