python - 在将列表输入谷歌表格时,我应该如何修复列表索引超出范围错误?
问题描述
无论我对范围进行什么更改,我都会不断收到此错误,我只是想知道是否有人可以解释我必须做些什么来解决这个问题。下面列出的是我收到错误的代码。任何帮助表示赞赏。
import gspread
from oauth2client.service_account import ServiceAccountCredentials
from pprint import pprint
import requests
from bs4 import BeautifulSoup
import bs4
import re
import time
memberList = []
res = requests.get('https://plancke.io/hypixel/guild/name/GBP')
soup = bs4.BeautifulSoup(res.text, 'lxml')
for i in soup.select('.playerInfo'):
memberList.append(i.text)
memberList = [e[37:-38] for e in memberList]
members = [re.sub("[A-Z][^A-Z]+$", "", member.split(" ")[1]) for member in memberList]
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name("creds.json", scope)
client = gspread.authorize(creds)
sheet = client.open('GBP Google Sheets').sheet1
data = sheet.get_all_records()
memberCol = sheet.col_values(16)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
memberCol.pop(0)
for i in range(len(memberCol) + 2):
time.sleep(1.2)
sheet.update_cell(i + 12,16, members[i - 1])
如果有更简单的方法可以将列表输入到谷歌表格中,那也将不胜感激。提前感谢您的时间和考虑。
解决方案
通过快速查看并且不知道在哪一行引发了这个异常,我只能猜测它是由于在代码末尾第一次调用 for 循环。
python 中的 range 函数将返回从 0 开始的数字,因此在您的循环中:
for i in range(len(memberCol) + 2):
time.sleep(1.2)
sheet.update_cell(i + 12,16, members[i - 1])
您会发现第一次运行循环时,i 值为 0,您尝试从成员访问的索引将是 members[0-1],-1 不在索引中。
除此之外,根据 memberCol 的长度,您可能会再次超出索引,因为 memberCol + 2 的大小可能超过数组中的成员数,再次引发异常。
推荐阅读
- python - 转换东部时区的时间并以没有 GMT-4 的正式时间格式打印
- android - 反应本机应用程序身份验证谷歌oauth重定向网址
- docker - 在容器内创建 docker 机密
- python - 为 DataFrame 中的每一列创建新的 Series 变量
- php - 在 Linux 中处理大量文件夹,效率的最佳结构
- matlab - 在 MATLAB 中创建恒定大小队列的简单方法
- android - 是否可以在 android 中使用 api 将图像和视频发布到 instagram 而无需重定向到应用程序
- javascript - 在 D3 图表中,“圆”不是线
- python - 来自 urllib2 的正则表达式字符串如何响应
- dotenv - Loopback 4 上的 dotenv 配置