使用python将xml文件转化为csv文件
时间: 2023-05-21 14:02:47 浏览: 209
可以使用Python中的xml.etree.ElementTree模块来解析XML文件,然后使用csv模块将数据写入CSV文件。以下是一个示例代码:
```python
import xml.etree.ElementTree as ET
import csv
# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()
# 打开CSV文件并写入数据
with open('example.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
# 写入表头
writer.writerow(['Name', 'Age', 'Gender'])
# 写入每个节点的数据
for person in root.findall('person'):
name = person.find('name').text
age = person.find('age').text
gender = person.find('gender').text
writer.writerow([name, age, gender])
```
这个示例代码将XML文件中的每个person节点的name、age和gender属性写入CSV文件中。
相关问题
使用Python将xml转csv
要将XML转换为CSV,可以使用Python中的模块,如lxml或pandas。
方法1:使用lxml
- 安装lxml:`pip install lxml`
- 代码示例:
```python
from lxml import etree
import csv
def xml2csv(xml_file, csv_file):
with open(xml_file, 'r') as f:
xml_content = f.read()
root = etree.XML(xml_content)
header = []
rows = []
for element in root.iter():
if element.tag == root.tag:
for sub_element in element:
row = []
if sub_element.tag not in header:
header.append(sub_element.tag)
for sub_sub_element in sub_element:
if sub_sub_element.tag not in header:
header.append(sub_sub_element.tag)
row.append(sub_sub_element.text)
rows.append(row)
with open(csv_file, 'w') as f:
writer = csv.writer(f)
writer.writerow(header)
for row in rows:
writer.writerow(row)
xml2csv('input.xml', 'output.csv')
```
方法2:使用pandas
- 安装pandas:`pip install pandas`
- 代码示例:
```python
import pandas as pd
def xml2csv(xml_file, csv_file):
xml_data = pd.read_xml(xml_file)
xml_data.to_csv(csv_file, index=None, header=True)
xml2csv('input.xml', 'output.csv')
```
python 超大XML转成csv文件
可以使用Python的xml.etree.ElementTree模块来解析XML文件,然后将数据写入CSV文件。以下是一个简单的代码示例:
```python
import csv
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('input.xml')
root = tree.getroot()
# 打开CSV文件并写入数据
with open('output.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
# 写入表头
header = []
for child in root[0]:
header.append(child.tag)
writer.writerow(header)
# 写入数据
for child in root:
row = []
for subchild in child:
row.append(subchild.text)
writer.writerow(row)
```
这个代码可以将名为"input.xml"的XML文件转换为名为"output.csv"的CSV文件。