我想要从一个字符串去掉空格的功能,我至今是:Python的定义功能
def stripped(x):
x = x.replace(' ', '')
string = " yes Maybe So"
我想这样做
string.stripped()
刚刚剥离的空间但我一直得到这个错误 AttributeError:'str'对象没有属性'剥离'
我在做什么错误我猜这是简单的东西我只是忽略克,提前感谢。
我想要从一个字符串去掉空格的功能,我至今是:Python的定义功能
def stripped(x):
x = x.replace(' ', '')
string = " yes Maybe So"
我想这样做
string.stripped()
刚刚剥离的空间但我一直得到这个错误 AttributeError:'str'对象没有属性'剥离'
我在做什么错误我猜这是简单的东西我只是忽略克,提前感谢。
当你定义你的功能,你的Python创建一个名为stripped
一个孤独的函数对象。它不会将您的功能添加到内建的str
对象。你刚才
need to call your method on the string normally:
>>> def stripped(x):
x = x.replace(' ', '')
>>> string = " yes Maybe So"
>>> stripped(string)
>>>
不过请注意string
将不会被修改,你需要将它返回x.replace()
的结果,并分配给string
:
>>> def stripped(x):
return x.replace(' ', '')
>>> string = " yes Maybe So"
>>> string = stripped(string)
>>> string
' yes Maybe So'
>>>
注意你问什么是techinally可能。 但是它是一个猴子补丁,不应该使用。但只是为了完整性:
>>> _str = str
>>>
>>> class str(_str):
def stripped(self):
return self.replace(' ', '')
>>> string = str(" yes Maybe So")
>>> string.stripped()
' yes Maybe So'
>>>
嘿嘿,我觉得我不得不退还它,我不理解这一点,谢谢你的帮助。我会尽快接受。 – Cannon
@Cannon很高兴我能帮到你。 –
您不能将方法添加到类似的现有类中。你可以写接收并返回一个字符串的函数:
def stripped(x):
return x.replace(' ', '')
,并通过将您的字符串调用它:
s = " yes Maybe So"
s = stripped(s)
如果你希望所有的空白,而不仅仅是空间,你可以做''.join(string.split())
def stripped(string):
return ''.join(string.split())
string = stripped(' yes Maybe So')
# But it would also handle this
string = stripped(' yes \n Maybe So\n')
assert string == 'yesMaybeSo'
尽管这也许提供了一个更好的方法,但它并没有回答主要问题,这可能就是为什么你被低估了。 (我没有downvote)。 –
您是通过执行string.stripped()
您已经定义的函数调用的字符串的方法将字符串作为参数,并且不向Python中的字符串对象添加方法。要剥离字符串,以这种方式将字符串传递给函数:
>>> s = "hello foo"
>>> stripped(s)
>>> s
"hellofoo"
这个答案是错误的。参数不会被Python中的指针传递,所以's'将不会改变。 –
@ChristianDean我什么时候指出使用指针? –
你没有,但你似乎认为传递变量到Python中的函数,就像传递一个指针。不是这样。 's'永远不会被修改。尝试自己的方法,你会明白我的意思。 –
您需要将字符串赋予“已剥离”。 'stripped'不是一个字符串方法。 – Carcigenicate
你想'剥离'到'返回x'然后'字符串=剥离(字符串)' – castis
[实现自定义字符串方法]的可能重复(https://stackoverflow.com/questions/4519702/implementing-a-custom -string-method) – depperm