【发布时间】:2020-07-15 19:20:36
【问题描述】:
我无法将 70 GB XML 文件解析为 CSV。
这就是 XML 的样子:
<?xml version="1.0" encoding="utf-8"?>
<File>
<row Id="1" Name="tanu" Count="289949" />
<row Id="2" Name="daniel" Count="863524" />
<row Id="3" Name="ricky" Count="1909662"/>
</File>
由于它是一个如此大的文件,我无法一次读取整个文件,因为它会杀死内核。我想先迭代一些行并将它们写入 CSV 文件。
我正在使用以下代码:
import xml.etree.ElementTree as et
import pandas as pd
path = 'file path'
root = et.parse(path)
rows = root.findall('.//row')
column_names = ['Id','Name','Count']
xml_data = [[row.get(col) for col in column_names]
data = pd.DataFrame(xml_data,columns=column_names)
data.to_csv ('File.csv', index = False, header = True)
如果有人能告诉我如何分块读取 XML 并将其写入 CSV,我将不胜感激。我无法在上述代码中正确运行.iterator 函数。
【问题讨论】:
-
如果文件的格式真的那么简单,您似乎可以手动将其分成更小的“块”,每个块都足够小以进行处理。每一个的 csv 输出可以附加到 csv 输出文件的末尾。
-
@martineau 因为它是一个 70 Gb 的文件,不幸的是,由于它有更多的列并且我什至不知道有多少行,所以无法手动划分文件。
-
如果每一行都在一行上,这似乎是可行的(不管每一行有多少列)。
标签: python xml csv dataframe elementtree