替换字符串中的字符(Python)

时间:2012-10-14 02:05:03

标签: python

  

可能重复:
  How to replace a string in a function with another string in Python?

我想输入任何类型字符的字符串,如果字符是字母,我想用“^”替换它并打印出来。

例如,如果我的输入为replace('text-here'),我应该将输出设为"^^^^-^^^^"

我尝试过使用以下语句,但它只是输出我输入的内容。请帮忙!

def replace(string):

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

我是python的新手,并不知道复杂的东西。请给我简单易懂的答案。谢谢!

4 个答案:

答案 0 :(得分: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)
'^^^^-^^^^'

答案 1 :(得分:2)

您可以使用Python's Regular Expressions library

像这样,

import re

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

# Outputs: "^^^^-^^^^"

答案 2 :(得分:1)

那是因为字符串是不可变的。 string.replace(string [x],“^”)返回一个新对象。

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

它将按预期工作。

答案 3 :(得分:0)

现在您的问题是“但它只打印我的输入”,我想告诉您方法str.replace将返回一个新字符串而不是替换字符串到位。

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

所以你需要做string = string.replace(...)