2017-10-08 14 views
3

次のコードが機能するかどうかを教えてください。私の意図はまったく動作していないようです文字列内の複数の文字を一度に置換する

string = str(input('Enter something to change')) 
replacing_words = 'aeiou' 

for i in replacing_words: 
    s = string.replace('replacing_words', ' ') 

print(s) 

私の意図は、文字列内のすべての母音をスペースで置き換えることです。 これが間違ったコードの場合、誰かが正しいコードと説明を手助けできたのですが、なぜそれがうまくいかなかったのですか?あなたはあなたのために、ループ内のリテラル「replacing_words」の代わりの変数iを使用している

答えて

2
  • ありがとうございました。
  • あなたは代わりに、あなただけここ

を示すべき最後の交換が正しいコードになり、その結果、新しい文字列を作成して、もう一度それを修正するために、元の文字列を置き換えるものではありません。

string = input('Enter something to change') 
vowels = 'aeiouy' 

for i in vowels: 
    string = string.replace(i, ' ') 

print(string) 

また、inputは文字列 'type'を返します。 strを呼び出すことは効果がありません。わからない。また、#2:yは母音でもあります(徹底したい場合はåäöやその他のウムラウトや奇妙な文字もあります)。

1

replaceメソッドが誤って使用されています。それぞれの文字を別々に置き換えたいので、毎回1つのcharを渡す必要があります。

string = ''.join(' ' if ch in vowels else ch for ch in string) 
+0

'str'があらかじめ定義されていないと(それが組み込みのシャドーイングに悪影響を与えることになります)、' .replace'呼び出しでエラーになります。また、リストコンパイルはちょうど間違っているので...これは実行されないか動作しません... –

+0

@JonClements、修正されたコメントありがとうございます。 –

+0

map/lambdaはちょっと残念ですが、少なくとも今は動作しています。ちょうど '''とみなしましたか? –

1

このコードを試してみてください:

string=raw_input("Enter your something to change") 
replacing_words = 'aeiou' 
for m in replacing_words: 
    string=string.replace(m, ' ') 
print string 
3

あなたはtranslation tableを定義することができます。ここ

は、トリックを行いワンライナーです。 Python2のコードは次のとおりです。

これは高速で簡潔でループを必要としません。

のpython3のために、あなたが書いたと思います:Pythonで

'test translation'.translate({ord(ch):' ' for ch in 'aeiou'}) # Thanks @JonClements. 
+1

Python 3では、 ''test translation'.translate({ord(ch):' 'のchで' aeiou '})'を使用できます。 –

0

を、文字列は不変です。

# Python 3.6.1 

""" Replace vowels in a string with a space """ 

txt = input('Enter something to change: ') 
vowels = 'aeiou' 
result = '' 

for ch in txt: 
    if ch.lower() in vowels: 
     result += ' ' 
    else: 
     result += ch 

print(result) 

テストそれ:Pythonの3では

Enter something to change: English language 
ngl sh l ng g 

。X、あなたも(インポートすることは何も)書き込むことはできません:

vowels = 'aeiouAEIOU' 
space_for_vowel = str.maketrans(vowels, ' ' * len(vowels)) 
print('hello wOrld'.lower().translate(space_for_vowel)) 

h ll w rld 
0

単語が母音の文字列である場合は、最初の文字列で確認することができ、その後に置き換えます。

string = str(input('Enter something to change')) 

replacing_words = 'aeiou' 

for i in string: 
    if i in replacing_words: 
     string=string.replace(i," ") 

print(string) 

をそして、あなたは元のコピーを保持する場合と、また、文字列を変更したい:

string = str(input('Enter something to change')) 
string1=string[:] 
replacing_words = 'aeiou' 

for i in string1: 
    if i in replacing_words: 
     string1=string1.replace(i," ") 

print("{} is without vowels : {} ".format(string,string1)) 

出力:

Enter something to change Batman 
Batman is without vowels : B tm n 
関連する問題