如何用Python中的另一个字符替换字符串中的字符?

时间:2012-11-18 03:12:09

标签: python string replace

我想用“!”替换字符串“aeiou”中不是“i”的每个字符

我写道:

def changeWord(word):
    for letter in word:
        if letter != "i":
            word.replace(letter,"!")
    return word

这只是返回原件。我怎么能回来“!!我!!”?

6 个答案:

答案 0 :(得分:5)

Python中的字符串是不可变的,因此您无法在适当的位置更改它们。查看documentation of str.replace

  

返回字符串的副本,其中所有出现的substring old都替换为new。如果   给出了可选的参数计数,只替换了第一次计数。

为了使其有效,请执行以下操作:

def changeWord(word):
    for letter in word:
        if letter != "i":
            word = word.replace(letter,"!")
    return word

答案 1 :(得分:4)

正则表达式对于这种事情非常有用。这将用“!”替换任何不是“i”的字符

import re
str = "aieou"
print re.sub('[^i]', '!', str)

返回:

!!i!!

答案 2 :(得分:3)

类似于使用split()join()

的内容
In [4]: strs="aeiou"

In [5]: "i".join("!"*len(x) for x in strs.split("i"))
Out[5]: '!!i!!'

答案 3 :(得分:3)

尝试这个,作为一个单行:

def changeWord(word):
    return ''.join(c if c == 'i' else '!' for c in word)

答案可以使用生成器简洁地表达,在这种情况下不需要使用正则表达式或循环。

答案 4 :(得分:2)

似乎没有人对str.translate给予任何爱:

In [25]: chars = "!"*105 + 'i' + "!"*150

In [26]: 'aeiou'.translate(chars)
Out[26]: '!!i!!'

希望这有帮助

答案 5 :(得分:0)

通常python字符串是不可变的,这意味着它不能被更改 创建之后。因此,我们必须将字符串转换为可变字符串,并且可以使用list,因为它是可变的。

string =“ Love”

editable = list(string)
editable[2]='s'
string=''.join(editable)

输出:丢失