私はこれをしたい:
>>> special = 'x'
>>> random_function('Hello how are you')
'xxxxx xxx xxx xxx'
基本的に文字列を返したい:{(str)-> str}
変数を未定義にし続けます。
申し訳ありませんが、これは私の最初の投稿です。
私はこれをしたい:
>>> special = 'x'
>>> random_function('Hello how are you')
'xxxxx xxx xxx xxx'
基本的に文字列を返したい:{(str)-> str}
変数を未定義にし続けます。
申し訳ありませんが、これは私の最初の投稿です。
Python の文字列は不変であるため、メソッドを使用するたびreplace()
に新しい文字列を作成する必要があります。replace の各呼び出しも、文字列全体をループする必要があります。これは明らかに非効率的ですが、この規模では目立ちません。
代替手段の 1 つは、リスト内包表記 ( docs、tutorial ) を使用して文字列を 1 回ループし、新しい文字のリストを作成することです。このisalnum()
メソッドは、英数字のみを置換するためのテストとして使用できます (つまり、スペース、句読点などはそのままにしておきます)。
最後のステップは、join()
メソッドを使用して文字を結合して新しい文字列にすることです。この場合、空の文字列を使用して''
、間に何も入れずに文字を結合していることに注意してください。使用した場合は' '.join(new_chars)
各文字の間にスペースがあり、使用した場合'abc'.join(new_chars)
は文字abc
が各文字の間にあります。
>>> def random_function(string, replacement):
... new_chars = [replacement if char.isalnum() else char for char in string]
... return ''.join(new_chars)
...
>>> random_function('Hello how are you', 'x')
'xxxxx xxx xxx xxx'
もちろん、おそらくこの関数にはrandom_function()
...よりも論理的な名前を付ける必要があります。
これは、正規表現を使用して簡単に実行できます。
>>> re.sub('[A-Za-z]', 'x', 'Hello how are you')
'xxxxx xxx xxx xxx'
def hide(string, replace_with):
for char in string:
if char not in " !?.:;": # chars you don't want to replace
string = string.replace(char, replace_with) # replace char by char
return string
print hide("Hello how are you", "x")
'xxxxx xxx xxx xxx'
これをコメントに追加するか、回答全体に追加する必要があるかわかりませんか? 他の誰かが示唆したように、正規表現を使用することをお勧めしますが、文字を使用し\w
てアルファベットの任意の文字を参照できます。完全なコードは次のとおりです。
import re
def random_function(string):
newString=re.sub('\w', 'x', string)
return(newString)
print(random_function('Hello how are you'))
xxxxx xxx xxx xxx を出力する必要があります