Python定义函数

时间:2017-06-22 17:36:21

标签: python string function

我想创建一个从字符串中删除空格的函数,到目前为止我是:

def stripped(x):
    x = x.replace('  ', '')

string = " yes   Maybe   So"

我想通过这样做来剥夺空间

string.stripped()

但我一直收到这个错误 AttributeError:' str'对象没有属性'剥离'

我做错了什么我猜这是一件简单的事,我只是在俯视,提前谢谢。

3 个答案:

答案 0 :(得分:1)

定义函数时,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'
>>>

答案 1 :(得分:0)

您无法将方法添加到现有类中。您可以编写一个接收并返回字符串的函数:

def stripped(x):
    return x.replace('  ', '')

通过传递你的字符串来调用它:

s = " yes   Maybe   So"
s = stripped(s)

答案 2 :(得分:-1)

如果你想要所有的空格,而不仅仅是空格,你可以''.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'