AttributeError: ‘str’ 对象没有属性 ‘pop’

AttributeError: ‘str’ 对象没有属性 ‘pop’

AttributeError: ‘str’ object has no attribute ‘pop’

“AttributeError: ‘str’ object has no attribute ‘pop’” 发生在我们尝试对pop()字符串而不是列表调用方法时。要解决此错误,请在pop()列表上调用该方法,或者rsplit()如果您需要从字符串中删除最后一个单词,请使用该方法。

attributeerror str 对象没有属性 pop

下面是错误如何发生的示例。

主程序
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.

Since 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.

main.py
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.

如果您尝试访问不在此列表中的任何属性,您将收到“AttributeError:str object has no attribute error”。

由于pop()不是字符串实现的方法,所以报错。

结论

“AttributeError: ‘str’ object has no attribute ‘pop’” 发生在我们尝试对pop()字符串而不是列表调用方法时。要解决此错误,请在pop()列表上调用该方法,或者rsplit()如果您需要从字符串中删除最后一个单词,请使用该方法。