如何根据 ID 查找行,然后使用 gspread python 编辑该行
How to find a row based on an ID and then edit the row with gspread python
然后我想根据ID找到一行,然后编辑整行。
我正在尝试的方式(这可能不是最佳方式)是使用 .find() 查找行,但即使我可以找到该行的内容,我也无法找到要编辑的范围:
sheet = client.open(Sheets.sheetname).worksheet(worksheet)
row = sheet.row_values(sheet.find(str,in_column=1).row)
return row
这将 return:
[{'id': 3, 'date': '2020/12/26', 'country': 'chile', 'city': 'Torres del Paine', 'name': 'Punta Arenas/Torres del Paine', 'comment': 'Viagem de Onibus', 'address': 'Puerto Natales Chile', 'latitude': -51.7308935, 'longitude': - 72.4977407,'cost':'0.00 美元','days':1,'category':'bus','media':'www.youtube.com'}]
但是我找不到这一行的范围来执行.update()
有什么想法吗?
谢谢!
您可以通过操作 row 和 col 属性来获取范围 find() 方法。
试试下面的代码:
import gspread
#convert number to column letter
def colnum_string(n):
string = ""
while n > 0:
n, remainder = divmod(n - 1, 26)
string = chr(65 + remainder) + string
return string
gc = gspread.service_account()
sh = gc.open("test").sheet1
cell = sh.find("3",in_column=1)
#get row number
row = cell.row
#get column number
col = cell.col
col_start = colnum_string(col)
row_len = len(sh.row_values(row))
col_end = colnum_string(row_len)
print("range is: %s%s:%s%s" % (col_start, row, col_end, row))
输出:
range is: A4:D4
工作表 1:
参考资料
convert number to spreadsheet letter
然后我想根据ID找到一行,然后编辑整行。 我正在尝试的方式(这可能不是最佳方式)是使用 .find() 查找行,但即使我可以找到该行的内容,我也无法找到要编辑的范围:
sheet = client.open(Sheets.sheetname).worksheet(worksheet)
row = sheet.row_values(sheet.find(str,in_column=1).row)
return row
这将 return: [{'id': 3, 'date': '2020/12/26', 'country': 'chile', 'city': 'Torres del Paine', 'name': 'Punta Arenas/Torres del Paine', 'comment': 'Viagem de Onibus', 'address': 'Puerto Natales Chile', 'latitude': -51.7308935, 'longitude': - 72.4977407,'cost':'0.00 美元','days':1,'category':'bus','media':'www.youtube.com'}]
但是我找不到这一行的范围来执行.update()
有什么想法吗? 谢谢!
您可以通过操作 row 和 col 属性来获取范围 find() 方法。
试试下面的代码:
import gspread
#convert number to column letter
def colnum_string(n):
string = ""
while n > 0:
n, remainder = divmod(n - 1, 26)
string = chr(65 + remainder) + string
return string
gc = gspread.service_account()
sh = gc.open("test").sheet1
cell = sh.find("3",in_column=1)
#get row number
row = cell.row
#get column number
col = cell.col
col_start = colnum_string(col)
row_len = len(sh.row_values(row))
col_end = colnum_string(row_len)
print("range is: %s%s:%s%s" % (col_start, row, col_end, row))
输出:
range is: A4:D4
工作表 1:
参考资料
convert number to spreadsheet letter