python:替换string中的单词

时间:2014-02-28 17:00:24

标签: python string list replace

我是python的新手所以我有这个问题。首先让我告诉你我想做什么。 我有一个包含这样的文件:

-0
    1
    3
    5
-00
    2
    3
    18
    321
...

我想取除-0,-xxxx字符串以外的每个元素并将它们转换为序列号,例如:

-0
    1
    2
    3
-00
    4
    2
    5
    6
...

我已经这样做了,我已将索引保存到字典中 但我也希望在字符串中替换它们。

我想替换确切的单词,我不想替换可能包含在另一个单词中的单词,例如:

111 replaced by 6
not 445111 replaced by 6 ~>4456

我有这个想法,但我不知道它是否有效或值得。对于-xxxx中的每个元素,我将创建一个列表,附加其元素,然后重命名它们并替换它们,然后将它们保存到文件中。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为这就是你所需要的:

for i, word in enumerate(z):
    if "-" not in word:
        if word in d.keys():
            z[i] = str(d[word])
        else:
            count = count + 1
            d[word] = count
            z[i] = str(count)

通过这种方式,您可以就地替换单词,而无需任何字符串操作。

答案 1 :(得分:0)

我不太清楚你想做什么。但是,如果列表元素和字符串元素应该是相同的,为什么不从列表中执行str(elem)。这样,您可以实际创建要在那里开始的字符串,而不是替换字符串中的元素。如果它不在字典中,你似乎只是替换了“word”。如果它已经在字典中,则将单词本身留在字符串中。

根据您显示的代码,这似乎就是这样做

您可以使用

创建字符串列表
newz = []
for word in z:
   if "-" not in word:
     if word not in d.keys():
        count = count + 1
        d[word] = count
        newz.append(str(count))
     else:
        newz.append(word)
   else:
     newz.append(word)