如何用Python中的另一个字符串替换函数中的字符串?

如何用Python中的另一个字符串替换函数中的字符串?,python,python-3.x,Python,Python 3.x,我想这样做: >>> special = 'x' >>> random_function('Hello how are you') 'xxxxx xxx xxx xxx' 我基本上想要返回字符串:{(str)->str} 我不断地得到未定义的变量 很抱歉,这是我的第一篇帖子。这可以通过正则表达式轻松完成: >>> re.sub('[A-Za-z]', 'x', 'Hello how are you') 'xxxxx xxx xxx xxx'

我想这样做:

>>> special = 'x'
>>> random_function('Hello how are you')
'xxxxx xxx xxx xxx'
我基本上想要返回字符串:{(str)->str}

我不断地得到未定义的变量


很抱歉,这是我的第一篇帖子。

这可以通过正则表达式轻松完成:

>>> re.sub('[A-Za-z]', 'x', 'Hello how are you')
'xxxxx xxx xxx xxx'

还可以查看和模块。

由于Python中的字符串是不可变的,因此每次使用
replace()
方法时都必须创建一个新字符串。每次调用replace也必须循环遍历整个字符串。这显然是低效的,尽管在这种规模上并不明显

另一种方法是使用列表压缩(,)在字符串中循环一次,并创建新字符的列表。该方法可用作仅替换字母数字字符(即保留空格、标点符号等)的测试

最后一步是使用该方法将字符连接到新字符串中。注意:在本例中,我们使用空字符串
'
将字符连接在一起,字符之间没有任何内容。如果我们使用
'.join(new\u chars)
每个字符之间都会有一个空格,或者如果我们使用
.abc.join(new\u 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\u function()

更符合逻辑的名称,不确定我应该在注释中还是在整个答案中添加这个?正如其他人所建议的,我建议使用正则表达式,但您可以使用
\w
字符来引用字母表中的任何字母。以下是完整的代码:

  import re

 def random_function(string):
     newString=re.sub('\w', 'x', string) 
     return(newString)

 print(random_function('Hello how are you'))
应打印XXXXXXX xxx xxx xxx

  import re

 def random_function(string):
     newString=re.sub('\w', 'x', string) 
     return(newString)

 print(random_function('Hello how are you'))