python:替换字符串中的词语
我刚开始学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)
这样你就可以直接替换文字,而不需要对字符串进行任何复杂的操作。