将计数数字添加到列表中的单词

时间:2014-10-24 08:48:25

标签: python-2.7

我有一个列表:

<w>Asf</w>
<k>BOO</k>
<l>leg</l>
<w>kum</w>
...

现在我需要类似的东西:

<w id='1'>Asf</w>
<k>BOO</k>
<l>leg</l>
<w id='2'>kum</w>
...
<w id='250'>mau</w>
...

所以我想添加此id='n',但仅限于<a>。我可以添加到该列表的东西,但我不知道如何使用计数数字。我甚至不知道该尝试什么。我可以使用正则表达式对<w>进行处理并在其中添加一些内容,但是如何将计数ID放入?

我尝试了什么:

chars = ('w', 'k','l')
tags = itertools.cycle(chars)
for word, tag in zip(my_list, tags):
    names1.append("<{0} id='1'>{1}</{0}>".format(tag, word))
    print("<{0} id='1'>{1}</{0}>".format(tag, word))

但这完全错了。我得到了开头和结尾标签的id,显然不计算在内。

1 个答案:

答案 0 :(得分:1)

不完全确定你在问什么。据我了解您的问题,您希望为每个id标记添加不断增加的<w>属性。你可以尝试这样的事情:

data = ['<w>Asf</w>', '<k>BOO</k>', '<l>leg</l>', '<w>kum</w>']
counter = 0
for i, line in enumerate(data):
    if "<w>" in line:
        data[i] = line.replace("<w>", "<w id='{}'>".format(counter))
        counter += 1
print data

这使用counter变量,每次行包含<w>标记时,该变量都会增加。如果要将id添加到其他标记,可以轻松地将其扩展为函数,将w或任何其他标记名称作为参数。

输出:

["<w id='0'>Asf</w>", '<k>BOO</k>', '<l>leg</l>', "<w id='1'>kum</w>"]