有人可以解释这个python代码吗?

时间:2015-05-12 19:28:06

标签: python

def censor(text, word):
    return text.replace(word, ("*"*len(word)))

此代码采用字符串' text'并取代'字'在带有多个星号的字符串中,基于'字的长度'。

我对Python很新,但我无法弄清楚.replace是如何工作的。从字符串的Python文档中,string.replace似乎需要3(或4)个参数。但代码似乎只需要两个?我确定我错了,但如果有人能够解释,那就太好了。

4 个答案:

答案 0 :(得分:6)

相关文档为here

  

str.replace(old, new[, count])

     

返回字符串的副本,其中所有出现的substring old都替换为new。如果给出了可选参数计数,则仅替换第一次计数出现次数。

如您所见,它需要两个参数(以及一个可选的第三个参数)。

您可能一直在查看string module中的文档。但是,正如它在该页面顶部所说的那样,该模块包含“一些已弃用的遗留函数,这些函数也可用作字符串上的方法”。在旧版本的Python中,您必须使用string.replace(original_string, replace_this, with_this)。现在您可以执行original_string.replace(replace_this, with_this),并且在大多数情况下根本不需要导入string模块。

答案 1 :(得分:1)

根据单词的长度,使用' repetation'创建替换。运营商' *'

例如:

nullptr

help(str)具有替换

的语法

|更换(...)  | S.replace(old,new [,count]) - >串  |  |返回包含所有子字符串的字符串S的副本  |老被新的取代。如果可选参数计数是  |给定,只替换第一次计数。

答案 2 :(得分:0)

从文档中,传递给replace的第一个参数是字符串本身。在该代码中,您不需要明确地传递它。 >>> text = "I like learning python" >>> word = "like" >>> len(word) 4 >>> "*"*4 '****' >>> text.replace(word,"*"*len(word)) 'I **** learning python' word是第2和第3个参数。第四个参数是可选的,是一个整数,指定要进行替换的最大出现次数。

答案 3 :(得分:0)

def censor(text,word):
     mask=("*"*len(word))
     maskedText=text.replace(word,mask)
     return maskedText

text='Hello is somebody home ? Hello'
word='Hello'
censor("hello is somebody home ? hello","hello")
'***** is somebody home ? *****'

我已经为你分解了代码。 首先我们创建了*****的掩码,因为你好有5个单词。这里 "*"*len(word)为您提供一个字符*重复的字符串。 你可以使用"x"*len(word),它会给你xxxxx打个招呼。

您可以使用python中的replace函数,使用新创建的掩码替换文本中所有hello的出现。

一般用法 1.Masking功能

 'pattern'*<no of times the pattern should be repeated> 

示例:

"abab"*3
'abababababab'

2.更换功能

<string>.replace(<word to be replaced>,<word/pattern to be used instead><number of times the occurances of the pattern should be repeated>

示例:

>>> text='hello hello hello'
>>> text.replace('hello','Hi',2)
'Hi Hi hello'

此函数为您提供字符串的副本。   如果要修改字符串并将其替换为格式化字符串,可以通过

轻松完成
text=text.replace('hello','Hi',2)

您可以阅读有关替换函数here的更多信息。

一般建议: 如有疑问,请转到命令行并使用 help()