2

所以我遇到的问题是我需要能够获取现有的文本文件并制作一个新文件,将 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 上的第一个问题,所以任何帮助都将不胜感激。

4

3 回答 3

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()))
于 2012-11-29T05:31:50.897 回答
1

这是一个非常简单的问题,您应该能够自己解决。由于您遇到了一些麻烦,我将向您展示如何解决大多数编程问题。

首先,划分问题。您有一个文本文件,您必须对其进行修改以包含 xml 标记。您已经正确地识别出打开和写入文件是不同的问题——并且您已经知道如何解决这些问题。此外,很明显但值得一提的是,您正在处理每一行上类似的重复模式。所以,如果你知道如何将每一行文本转换成你想要的,你就解决了这个问题。现在,让我们看一下第一行:

Hello

变成

<tag1>Hello</tag1>

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

下面是一个计数器的例子:

for i in range(10):
    print i

另一个:

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

而已。我相信你现在可以自己解决问题。

于 2012-11-29T05:34:00.103 回答
-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.
于 2012-11-29T05:28:56.423 回答