我想用“!”替换字符串“aeiou”中不是“i”的每个字符
我写:
def changeWord(word):
for letter in word:
if letter != "i":
word.replace(letter,"!")
return word
这只是返回原件。我怎样才能返回“!!i!!”?
Python 中的字符串是不可变的,因此您无法就地更改它们。查看str.replace 的文档:
返回字符串的副本,其中所有出现的子字符串 old 都替换为 new。如果给定了可选参数 count,则仅替换第一个 count 出现。
因此,要使其工作,请执行以下操作:
def changeWord(word):
for letter in word:
if letter != "i":
word = word.replace(letter,"!")
return word
正则表达式对于这类事情非常强大。这会将任何不是“i”的字符替换为“!”
import re
str = "aieou"
print re.sub('[^i]', '!', str)
返回:
!!i!!
像这样使用split()
和join()
:
In [4]: strs="aeiou"
In [5]: "i".join("!"*len(x) for x in strs.split("i"))
Out[5]: '!!i!!'
试试这个,作为一个单行:
def changeWord(word):
return ''.join(c if c == 'i' else '!' for c in word)
可以使用生成器简洁地表达答案,在这种情况下无需使用正则表达式或循环。
似乎没有人给予任何爱str.translate
:
In [25]: chars = "!"*105 + 'i' + "!"*150
In [26]: 'aeiou'.translate(chars)
Out[26]: '!!i!!'
希望这可以帮助
通常在 python 中字符串是不可变的,这意味着它在创建后无法更改。所以我们必须将字符串转换为可变的,这可以使用列表来实现,因为它是可变的。
字符串="爱"
editable = list(string)
editable[2]='s'
string=''.join(editable)
输出:输