Как найти строку на основе идентификатора, а затем отредактировать строку с помощью gspread python

Затем я хочу найти строку на основе идентификатора и отредактировать всю строку. То, как я пытаюсь (что может быть не самым оптимальным способом), заключается в поиске строки с помощью .find(), но даже если я могу найти содержимое строки, я не могу найти диапазон для редактирования:

sheet = client.open(Sheets.sheetname).worksheet(worksheet)
row = sheet.row_values(sheet.find(str,in_column=1).row)
return row

Это вернет: [{'id': 3, 'date': '2020/12/26', 'country': 'chile', 'city': 'Torres del Paine', 'name': 'Punta Arenas/Torres del Paine' , 'комментарий': 'Виагем де Онибус', 'адрес': 'Пуэрто-Наталес Чили', 'широта': -51.7308935, 'долгота': -72.4977407, 'стоимость': '0,00$', 'дни': 1, ' категория': 'автобус', 'медиа': 'www.youtube.com'}]

Но я не могу найти диапазон этой строки для выполнения .update()

Есть идеи? Спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
728
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить диапазон, манипулируя свойствами строки и столбца метода 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:

Рекомендации

поиск ячейки

преобразовать число в букву электронной таблицы

Спасибо! Я только что понял, основываясь на вашем сообщении, что я использовал row_values() и для получения строки я не должен ее использовать. Спасибо!!

Fernão de Rocha Guerra 13.12.2020 04:34

Другие вопросы по теме