Python文本文件到xml

Posted

技术标签:

【中文标题】Python文本文件到xml【英文标题】:Python text file to xml 【发布时间】:2013-09-15 09:04:23 【问题描述】:

我有一个关于将文本文件转换为 XML 的问题。我已经很好地转换了文本文件,它看起来像:

Program: 5 Start: 2013-09-11 05:30:00 Duration 06:15:00 Title: INFOCANALE

我在 XML 中的输出会像

<data>
  <eg>
    <program>Program 5</program>
    <start>2013-09-11 05:30:00</start>
    <duration>06:15:00</duration>
    <title>INFOCANALE</title>
  </eg>
</dat‌​a>

python可以将文本文件转换为XML吗? 你能帮我一些建议,或者一些代码吗?

【问题讨论】:

我的文字看起来像:程序:5 开始:2013-09-11 05:30:00 持续时间 06:15:00 标题:INFOCANALE 我的输出将是:Program 52013-09-11 05:30:00 06:15:00INFOCANALE 您的文件格式是固定的还是可以更改?至少你可以在每个值后面加上分号,这样更容易解析 复制:***.com/questions/17068536/… 我可以更改我的文本文件,也可以将其重命名为任何内容。 【参考方案1】:

我认为最简单的方法是将您的文件更改为 csv 文件,如下所示:

Program,Start,Duration,Title
5,2013-09-11 05:30:00,06:15:00,INFOCANALE

然后将其转换为:

from lxml import etree
import csv

root = etree.Element('data')

rdr = csv.reader(open("your file name here"))
header = rdr.next()
for row in rdr:
    eg = etree.SubElement(root, 'eg')
    for h, v in zip(header, row):
        etree.SubElement(eg, h).text = v

f = open(r"C:\temp\data2.xml", "w")
f.write(etree.tostring(root))
f.close()

# you also can use
# etree.ElementTree(root).write(open(r"C:\temp\data2.xml", "w"))

【讨论】:

Traceback(最近一次调用最后一次):文件“./epg.py”,第 53 行,在 etree.SubElement(例如,h).text = v 文件“lxml.etree. pyx”,第 2659 行,在 lxml.etree.SubElement (src/lxml/lxml.etree.c:53668) 文件“apihelpers.pxi”,第 204 行,在 lxml.etree._makeSubElement (src/lxml/lxml.etree. c:12230) 文件“apihelpers.pxi”,第 1542 行,在 lxml.etree._tagValidOrRaise (src/lxml/lxml.etree.c:23956) ValueError: Invalid tag name u' Program 10' @car 你把你的文件转换成csv了吗?你能举几个字符串作为例子吗? 不,当我想转换它时会出错,但我会尝试使用我的 xml 代码。我认为它会起作用。 output = open('epg.xml','w') n = 0 print >> output, ''+ '\t' print >> output, '' with open('epg_slo_utf_xml.txt','r') as txt: for line in txt: if re.search('Program', line) !=None: n = n + 1 e = ''+line+'' if re.search('Start', line) !=None: n = n + 1 f = '' +line+'' if re.search('Duration', line) !=None: n = n + 1 g = ''+line+'' wo = e + f + g打印 >> 输出,wo + w 打印 >> 输出,'' @RomanPekar 它还会考虑空格吗?我正在使用 python 3.2。

以上是关于Python文本文件到xml的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python修改xml文件中嵌套元素的文本?

如何提示用户将文本 (xml) 保存到文件?

如何将文本框绑定到 XML 文件(带有命名空间)

用python提取xml文件<text></text>标签内的文本内容

从 XML 文件填充文本框

在myeclipse里面如何用文本编辑器打开xml文件?