我基本上写了一个简单的函数,用户输入一个句子( 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很新。 感谢
答案 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 ...