如何使用Google电子表格在Python中搜索特定列并返回特定值?

问题描述 投票:0回答:1

我无法让它发挥作用。本质上我希望用户输入一个关键字,然后得到一个问题和答案对作为返回。电子表格中的第一、第二和第三列包含关键字,第四列和第五列分别包含问题和答案。我希望程序只在前三列中搜索关键字,然后只返回包含该关键字的任何行中的第四列和第五列。

因此,用户输入“VPN”一词,程序将搜索前 3 列,看看是否有任何等于 VPN。假设第一行第一列等于 VPN,那么程序应该返回第一行的问题和答案列。

我有搜索所有列并返回该列中所有值的代码,但我在处理特定的行和列部分时遇到了问题。任何帮助将不胜感激!

scope =["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://ww$
creds = ServiceAccountCredentials.from_json_keyfile_name("key.json", scope)
client = gspread.authorize(creds)
sheet = client.open("Questionnaire").sheet1

userInput = input('Ask your question: ')

cell = sheet.find(userInput, in_column=[1-3]) #Not sure how to search multiple columns
 
rownum = cell.index(userInput) + 1
row = sheet.row_values(rownum) #Not sure how to return specific columns within this row

if cell != None:
        print(row)
else:
        print("I don't know the answer to that question")


python python-3.x google-sheets google-api-python-client gspread
1个回答
0
投票

根据Gspread的文档,find()函数一次只能搜索一列。因此,我建议使用 while 循环来循环前三列,并在单元格变量不是

None
或计数器超过三时退出,因为您不希望它迭代第四列或第五列。

column = 1
while cell != None or column <= 3:
    cell = sheet.find(userInput, in_column=column)
    column += 1 

if cell != None: 
    question_col = sheet.acell(f'D{cell.row}').value
    answer_col = sheet.acell(f'E{cell.row}').value
    print({question_col}: {answer_col})

else:
    print("I don't know the answer to that question")
© www.soinside.com 2019 - 2024. All rights reserved.