python:替换字符串中的词语

2 投票
2 回答
966 浏览
提问于 2025-04-17 20:22

我刚开始学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

我不太确定你想要做什么。不过,如果列表里的元素和字符串里的元素应该是一样的,那为什么不直接用 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)
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)

这样你就可以直接替换文字,而不需要对字符串进行任何复杂的操作。

撰写回答