如何解决如何正确调用此函数?
大家好,我目前正在尝试使用两种方法构建 phone_numbers 生成器。第一个是 phone_numbers,每次需要新生成的号码时都应该调用它。您可以从 next_phone_numbers 获取号码。如果没有可用号码,此函数还应调用 phone_numbers。但是,当我调用它时,我总是收到一条错误消息。这是我的代码:
def phone_number(self):
request = requests.get('https://www.bestrandoms.com/random-at-phone-number')
soup = BeautifulSoup(request.content,'html.parser')
self.phone_numbers = soup.select_one('#main > div > div.col-xs-12.col-sm-9.main > ul > textarea').text
self.phone_numbers = self.phone_numbers.splitlines()
for phone in range(len(self.phone_numbers)):
self.phone_numbers[phone] = '+43' + self.phone_numbers[phone][1:].replace(' ','')
self.phone_numbers.extend(self.phone_numbers)
return self.phone_numbers
@property
def next_phone_number(self):
self.phone_index += 1
if self.phone_index >= len(self.phone_numbers):
self.phone_number()
return self.phone_numbers[self.phone_index]
错误信息: enter image description here
解决方法
问题在于 phone_number()
函数没有将 self.phone_numbers
列表扩展到足以涵盖 self.phone_index
超出范围的事实。也许考虑这样做以扩展到足够大:
@property
def next_phone_number(self):
self.phone_index += 1
while self.phone_index >= len(self.phone_numbers):
self.phone_number()
return self.phone_numbers[self.phone_index]
,
当您执行 self.phone_numbers = soup.select_one(...)
时,您正在破坏 self.phone_numbers
中的旧电话号码列表,并将其替换为您从网页解析的数据。您稍后将其细化为一个新列表,但它在添加新数字方面仍然没有达到您想要的效果(我还没有尝试过代码,我猜您总是从网络上获得相同数量的数字)。
您应该为新数据使用不同的变量名称。这样您就可以使用新数据extend
现有列表,而无需覆盖您已有的任何内容:
def phone_number(self):
request = requests.get('https://www.bestrandoms.com/random-at-phone-number')
soup = BeautifulSoup(request.content,'html.parser')
# these lines all use new local variables instead of clobbering self.phone_numbers
new_data = soup.select_one('#main > div > div.col-xs-12.col-sm-9.main > ul > textarea').text
new_numbers = new_data.splitlines()
new_numbers_reformatted = ['+43' + number[1:].replace(' ','') for number in new_numbers]
# so now we can extend the list as desired
self.phone_numbers.extend(new_numbers_reformatted)
return self.phone_numbers
您可能还需要更改类中的初始化代码,以确保它将 self.phone_numbers
初始化为空列表(如果它还没有这样做的话)。如果列表没有在其他任何地方创建,那么您的方法的不良行为可能会掩盖错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。