我在xml文件中有数据,我正在阅读3列:第一个月
xml数据
<?xml version='1.0' encoding='utf-8'?>
<data>
<row>
<index>0</index>
<price>$5.95</price>
<name>Belgian Waffles</name>
<desc>Two of our famous Belgian Waffles with plenty of real maple syrup</desc>
<calories>650</calories>
</row>
<row>
<index>1</index>
<price>$7.95</price>
<name>Strawberry Belgian Waffles</name>
<desc>Light Belgian waffles covered with strawberries and whipped cream</desc>
<calories>900</calories>
</row>
<row>
<index>2</index>
<price>$8.95</price>
<name>Berry-Berry Belgian Waffles</name>
<desc>Light Belgian waffles covered with an assortment of fresh berries and whipped cream</desc>
<calories>900</calories>
</row>
<row>
<index>3</index>
<price>$4.50</price>
<name>French Toast</name>
<desc>Thick slices made from our homemade sourdough bread</desc>
<calories>600</calories>
</row>
<row>
<index>4</index>
<price>$6.95</price>
<name>Homestyle Breakfast</name>
<desc>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</desc>
<calories>950</calories>
</row>
</data>
代码:
import xml.etree.ElementTree as ET
parse_xml = ET.parse('/content/sample_data/xyz.xml')
get_root_element = parse_xml.getroot()
for data in get_root_element.findall('row'):
prc = data.find('price')
nm = data.find('name')
cal = data.find('calories')
temp = prc.text + ',' + nm.text + ',' + cal.text
print(temp)
上面的代码给我的数据,但需要将此数据存储到csv文件
我需要如何编写逻辑呢?可以用pandas / csv
来做吗
需要添加我的标题以及该csv文件
顶盖:price , name , calories
3条答案
按热度按时间drkbr07n1#
@kiric8494的Solution已经足够好了,你可以继续使用它,你也可以使用
csv.DictWriter
来实现它,它会非常短:基本上,我们设置
DictWriter
以忽略除price
、name
和calories
之外的所有字段,然后将生成器传递给.writerows()
,.writerows()
构造<row>
的所有子节点的字典,其中 *key是标签 *,*value是文本 *。z2acfund2#
感谢您的解决方案@ewz93
我已按以下方式完成
ht4b089n3#
我只需要将值放入列表中,然后从中创建一个DataFrame:
这可能不是最好的解决方案,因为还有pandas.read_xml(),所以您可能可以缩短它,并通过直接将XML读入DataFrame,然后直接将其写入CSV来避免使用etree。