1

重複の可能性:
関数内の文字列をPythonで別の文字列に置き換える方法は?

任意の文字列を任意の文字列で入力し、その文字がアルファベットの場合は「^」に置き換えて出力したい。

たとえば、入力が の場合、replace('text-here')出力は として取得する必要があります"^^^^-^^^^"

次のステートメントを使用してみましたが、入力が何であれ出力されるだけです。助けてください!

def replace(string):

    for x in range(len(string)):
        string.replace(string[x],"^")
    print(string)

私はPythonが初めてで、複雑なことを知りません。分かりやすい回答をお願いします。ありがとう!

4

4 に答える 4

3
>>> text = 'text-here'
>>> ''.join('^' if c.isalpha() else c for c in text)
'^^^^-^^^^'

これは理解しやすいと思いますが、念のために、より簡単に何をするかを示すコードを示します。

>>> def replace(text):
        new_text = ''
        for c in text:
            if c.isalpha():
                new_text += '^'
            else:
                new_text += c
        return new_text

>>> replace(text)
'^^^^-^^^^'
于 2012-10-14T02:07:09.723 に答える
2

Pythonの正規表現ライブラリを使用できます。

そのようです、

import re

re.sub('\w', '^', 'text-here')

# Outputs: "^^^^-^^^^"
于 2012-10-14T02:15:32.807 に答える
1

これは、文字列が不変であるためです。string.replace(string[x],"^") は新しいオブジェクトを返します。

Modify 
string.replace(string[x],"^")
to 
string = string.replace(string[x],"^")

期待どおりに動作します。

于 2012-10-14T02:23:18.153 に答える
0

あなたの質問は " になっていますが、私の入力が " だったものを出力するだけstr.replaceです。このメソッドは、文字列をその場で置き換えるのではなく、新しい文字列を返すことをお伝えしたいと思います。

>>> a = "foo"
>>> a.replace("foo","bar")
'bar'
>>> a
'foo'

だからあなたはする必要がありますstring = string.replace(...)

于 2012-10-14T02:14:53.453 に答える