文字列「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!!'
お役に立てれば