我想用“!”替换字符串“aeiou”中不是“i”的每个字符
我写道:
def changeWord(word):
for letter in word:
if letter != "i":
word.replace(letter,"!")
return word
这只是返回原件。我怎么能回来“!!我!!”?
答案 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)
输出:丢失