在Google表格中输入列表时,如何解决列表索引超出范围的错误?

问题描述

无论范围如何变化,我都会不断收到此错误,我只是想知道是否有人可以解释要解决此问题所要做的事情。下面列出的是我得到错误的代码。任何帮助表示赞赏。

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])

如果有更简单的方法将列表输入到Google表格中,也将不胜感激。预先感谢您的时间和考虑。

解决方法

通过快速浏览并且不知道在哪一行引发此异常,我只能猜测是由于在代码结尾处对for循环的第一次调用所致。

python中的range函数将返回从0到0的数字,因此在您的循环中使用:

for i in range(len(memberCol) + 2):
time.sleep(1.2)
sheet.update_cell(i + 12,16,members[i - 1])

您会发现,第一次运行循环时,i值为0,您要尝试从成员访问的索引将是member [0-1],其中-1不在索引中。 / p>

除此之外,根据memberCol的长度,您可能会再次超出索引范围,因为memberCol + 2的大小可能会超出数组中的成员数,从而再次引发异常。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...