我想这样做:
>>> special = 'x'
>>> random_function('Hello how are you')
'xxxxx xxx xxx xxx'
我基本上想要返回字符串:{(str) - > STR}
我继续未定义变量。
对不起,这是我的第一篇文章。
答案 0 :(得分:4)
这可以通过正则表达式轻松完成:
>>> re.sub('[A-Za-z]', 'x', 'Hello how are you')
'xxxxx xxx xxx xxx'
答案 1 :(得分:4)
由于Python中的字符串是不可变的,因此每次使用replace()
方法时都必须创建一个新字符串。每次调用replace也必须遍历整个字符串。这显然是低效的,尽管在这种规模上并不明显。
另一种方法是使用列表comprehesion(docs,tutorial)循环遍历字符串一次并创建新字符列表。 isalnum()
方法可用作仅替换字母数字字符的测试(即,保留空格,标点符号等不变)。
最后一步是使用join()
方法将字符连接到新字符串中。请注意,在这种情况下,我们使用空字符串''
来连接字符,它们之间没有任何内容。如果我们使用' '.join(new_chars)
,则每个字符之间会有一个空格,或者如果我们使用'abc'.join(new_chars)
,那么字母abc
将位于每个字符之间。
>>> def random_function(string, replacement):
... new_chars = [replacement if char.isalnum() else char for char in string]
... return ''.join(new_chars)
...
>>> random_function('Hello how are you', 'x')
'xxxxx xxx xxx xxx'
当然,你应该给这个函数一个比random_function()
...
答案 2 :(得分:1)
def hide(string, replace_with):
for char in string:
if char not in " !?.:;": # chars you don't want to replace
string = string.replace(char, replace_with) # replace char by char
return string
print hide("Hello how are you", "x")
'xxxxx xxx xxx xxx'
答案 3 :(得分:0)
不确定我是否应在评论或整个答案中添加此内容?正如其他人建议的那样,我建议使用正则表达式,但您可以使用\w
字符来引用字母表中的任何字母。这是完整的代码:
import re
def random_function(string):
newString=re.sub('\w', 'x', string)
return(newString)
print(random_function('Hello how are you'))
应打印xxxxx xxx xxx xxx