AttributeError: ‘str’ 对象没有属性 ‘pop’
AttributeError: ‘str’ object has no attribute ‘pop’
“AttributeError: ‘str’ object has no attribute ‘pop’” 发生在我们尝试对pop()
字符串而不是列表调用方法时。要解决此错误,请在pop()
列表上调用该方法,或者rsplit()
如果您需要从字符串中删除最后一个单词,请使用该方法。
下面是错误如何发生的示例。
my_str = 'one two three' # ⛔️ AttributeError: 'str' object has no attribute 'pop' print(my_str.pop())
我们试图pop()
在字符串上调用该方法并得到错误。
pop()
如果您需要从列表中删除一个项目,请调用列表pop()
上的方法。
my_list = ['one', 'two', 'three'] my_list.pop() print(my_list) # 👉️ ['one', 'two']
list.pop
方法删除列表
中给定位置的项目并将其返回。
如果未指定索引,该pop()
方法将删除并返回列表中的最后一项。
如果需要从字符串中删除最后一个单词,请使用rsplit()
方法。
my_str = 'one two three' result = my_str.rsplit(' ', 1)[0] print(result) # 👉️ "one two"
str.rsplit
方法使用提供的分隔符作为分隔符字符串返回字符串中的单词列表。
该方法采用以下 2 个参数:
姓名 | 描述 |
---|---|
分隔器 | 在每次出现分隔符时将字符串拆分为子字符串 |
最大分裂 | 最多maxsplit 完成拆分,最右边的(可选) |
my_str = 'one two three' print(my_str.rsplit(' ')) # 👉️ ['one', 'two', 'three'] print(my_str.rsplit(' ', 1)) # 👉️ ['one two', 'three']
Except for splitting from the right, rsplit()
behaves like split()
.
To remove the last word from the string, we split the string on the last space
with maxsplit
set to 1
.
rsplit
splits from the right, we split only the last word and access the rest of the string at position 0
of the list.A good way to start debugging is to print(dir(your_object))
and see what
attributes a string has.
Here is an example of what printing the attributes of a string
looks like.
my_string = 'hello world' # [ 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', # 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', # 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', # 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', # 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', # 'title', 'translate', 'upper', 'zfill'] print(dir(my_string))
If you pass a class to the
dir() function, it
returns a list of names of the class’s attributes, and recursively of the
attributes of its bases.
由于pop()
不是字符串实现的方法,所以报错。
结论
“AttributeError: ‘str’ object has no attribute ‘pop’” 发生在我们尝试对pop()
字符串而不是列表调用方法时。要解决此错误,请在pop()
列表上调用该方法,或者rsplit()
如果您需要从字符串中删除最后一个单词,请使用该方法。