Python - 替换字符串中的字母?

时间:2013-07-26 16:46:25

标签: python

我基本上写了一个简单的函数,用户输入一个句子( strng ),一个字母(字母)和另一个字母(替换)用第一个字母替换。这就是我所拥有的:

def letter_replace(strng, letter, replace):
    replace = str(replace)
    for char in strng:
        if char == letter.upper() or char == letter.lower():
            strng.replace(char, replace)
            return strng
        else:
            return "Sorry, the letter could not be replaced."

我无法弄清楚为什么这不起作用。对不起,如果这是一个完全明显的错误,我对Python很新。 感谢

4 个答案:

答案 0 :(得分:6)

strings是不可变的,您需要将其分配给新变量并返回该变量。 replace()返回一个新字符串,但不会更改它。

>>> def letter_replace(strng, letter, replace):
    replace = str(replace)
    for char in strng:
        if char == letter.upper() or char == letter.lower():
            strng = strng.replace(char, replace)
            return strng   # Or just do return strng.replace(char, replace)
        else:
            return "Sorry, the letter could not be replaced."


>>> letter_replace('abc', 'a', 'f')
'fbc'

答案 1 :(得分:3)

strng.replace(char, replace)

执行替换,创建新字符串,然后抛弃更改后的字符串,因为您没有将其分配给变量。

因为无论如何你只是要归还它,你可以简单地写一下:

return strng.replace(char, replace)

答案 2 :(得分:0)

您可以使用正则表达式执行此操作:

In [11]: import re

In [12]: def letter_replace(s, l, r):
   ....:     p = re.compile(l, re.IGNORECASE)
   ....:     return p.sub(r, s, 1)
   ....: 

In [13]: letter_replace('AaBbCc', 'a', 'x')
Out[13]: 'xaBbCc'

答案 3 :(得分:0)

使用字符串翻译!!!

import string
old_chars = "aeiou"
replace_chars = "!@#$%"
tab = string.maketrans(old_chars,replace_chars)
print "somestring".translate(tab)

哦,没关系......我刚读你只想用一个角色......

使用string.replace ...