如何在python中使用现有的文本文件添加XML标签新文件?

时间:2012-11-29 05:09:36

标签: python xml text-files

所以我遇到的问题是我需要能够获取现有的文本文件并创建一个新文件,将xml标签添加到每一行。例如:

Hello
World
This
Is
The
Text
应该将

写入这样的新文本文件

<tag1>Hello</tag1>
<tag2>World</tag2>
<tag3>This</tag3>
<tag4>Is</tag4>
<tag5>The</tag5>
<tag6>Text</tag6>

我知道如何打开和写入新文件但操作数据时遇到问题,我仍然是菜鸟,这是我对stackoverflow的第一个问题,所以任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:1)

如果您想简单地做,请使用vim打开文本文件并输入以下内容。

:%s!\(.*\)!\=printf("<tag%d>%s</tag%d>", line("."), submatch(1), line("."))!g

或者如果你想使用python,

from xml.sax.saxutils import escape
with open('file.txt', 'r') as f:
  print "\n".join((lambda y: ["<tag%d>%s</tag%d>" % (i+1, escape(y[i].strip()), i+1) for i in range(0, len(y))])(f.readlines()))

@goncalopp的回答

from xml.sax.saxutils import escape
for i,line in enumerate(open('file.txt')):
  print "<tag{0}>{1}</tag{0}>".format(i+1,escape(line.strip()))

答案 1 :(得分:1)

这是一个非常简单的问题,你应该能够自己解决。 由于你遇到了一些麻烦,我会告诉你如何攻击大多数编程问题。

首先,划分问题。 您有一个文本文件,您必须修改该文件以包含xml标记。您已经正确地确定打开和写入文件是单独的问题 - 您已经知道如何解决这些问题。此外,很明显但值得一提的是,你在每一行处理类似的重复模式 。因此,如果您知道如何将文本的每一行转换为您想要的内容,那么您将解决问题。现在,让我们看看第一行:

Hello

变为

<tag1>Hello</tag1>

为了将一个转换为另一个,必须执行哪些步骤?好吧,第二个是第一个在字符串的开头和结尾插入一些文字!这称为字符串连接,只需谷歌搜索即可立即找到答案。 此外,您有标签号的问题,每行都有不同的标签号。这可以通过保留计数器变量,将数字转换为字符串,并将其连接来解决。

以下是计数器的示例:

for i in range(10):
    print i

和另一个:

i=0
while i<10:
    print i
    i+=1

就是这样。我相信你现在可以自己解决这个问题。

答案 2 :(得分:-1)

>>> f = open('file.txt', 'r')
>>> lines = f.readlines()
>>> for index in range(len(lines)):
...     print '<tag%s>%s</tag%s>'%(index+1, lines[index].strip(), index+1)
... 
<tag1>Hello</tag1>
<tag2>World</tag2>
<tag3>This</tag3>
<tag4>Is</tag4>
<tag5>The</tag5>
<tag6>Text</tag6>
Hope you know how to write into file.