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 回答