这是python中的一个字符串:
a = "asdf as df adsf as df asdf asd f"
假设我想用“||”替换所有“”,所以我这样做:
>>> a.replace(" ", "||")
'asdf||as||df||adsf||as||df||asdf||asd||f'
我的困惑是来自the documentation的信息如下:
string.replace(s, old, new[, maxreplace])
Return a copy of string s with all occurrences...
我可以“省略”s
,但根据我需要的文档s
;但是,我只提供old
和new
。我注意到有很多python文档就像这样;我错过了什么?
答案 0 :(得分:5)
您正在将str
对象方法与string
模块函数混合使用。
您所指的文档是string
module documentation.实际上,字符串模块中有一个名为replace
的函数,它有3个(或可选的4个)参数:
In [9]: string
Out[9]: <module 'string' from '/usr/lib/python2.7/string.pyc'>
In [11]: string.replace(a, ' ', '||')
Out[11]: 'asdf||as||df||adsf||as||df||asdf||asd||f'
a
是str
个对象 - (str
是一个类型,string
是一个模块):
In [15]: type(a)
Out[15]: str
str
个对象有replace
方法。 str
方法的文档为here。
答案 1 :(得分:1)
当您调用对象的方法时,该对象将自动作为第一个参数提供。通常在方法中,这被称为self
。
所以你可以调用传入对象的函数:
string.replace(s, old, new)
或者你可以调用对象的方法:
s.replace(old, new)
两者在功能上完全相同。
答案 2 :(得分:1)
方法的第一个参数是对被修改的对象(通常称为self
)的引用,当您使用object.method(...)
表示法时,隐式传递。所以这个:
a = "asdf as df adsf as df asdf asd f"
print a.replace(" ", "||")
相当于:
a = "asdf as df adsf as df asdf asd f"
print str.replace(a, " ", "||")
str
是a
对象的类。这只是语法糖。