Вопрос:
Используя GSpread, у меня есть диапазон ячеек, возвращенный из электронной таблицы google, который имеет все его элементы примерно так:
<Cell R1C1 ‘Sandero’>
Я знаю, как получить отсюда значение ячейки:
cell.value
но я также хотел бы получить адрес (R1C1 в этом случае) отдельно. Это должно быть (R1, C1) или даже лучше, если я могу получить его в формате (1,1) (может быть, с помощью словаря?)
Вы видите, что мне нужен адрес, потому что позже я объявлю график с этими значениями.
Я использую Python 2.7 и последнюю библиотеку Gspread.
Любая помощь была бы очень оценена.
Лучший ответ:
Лучший способ получить координаты ячеек – использовать row свойств экземпляра ячейки и col. Таким образом, ваш код может быть упрощен:
for cell in cell_list: print cell.value print «Row:», cell.row, «Column:», cell.col
Чтобы получить кортеж, просто заверните его в скобки: (cell.row, cell.col).
Поскольку я являюсь автором gspread, я обновил страницу библиотеки, чтобы дать понять, как получить сотовые координаты. Спасибо, что указали недостающую часть.
Ответ №1
Через несколько часов мне удалось проделать грязную работу самостоятельно.
Поэтому у меня есть данные в диапазоне ячеек, полученных из уже открытой электронной таблицы google:
cell_list = worksheet.range(‘A1:J8’)
Это содержит <Cell R1C1 ‘Sandero’> но также <Cell R1C2 ’23’> и так далее.
Теперь, чтобы получить из части <Cell R1C1 координаты (1,1), которые я буду использовать для создания графика позже в моем проекте, я понял, что лучший способ <Cell R1C1:
for cell in cell_list: # will check all elements of the worksheet range A1:J8 print cell # for example at one point this is <Cell R1C1 ‘Sandero’> print cell.value # Sandero cella = re.findall(r’d+’,str(cell)) # will take only numbers from <Cell R1C1 ‘Sandero’> print cella[:2] # will give you the first two elements of list cella. #In this case ‘1’,’1′. This is exactly what I need. # to specify [:2] it important if it would be <Cell R1C2 ’23’>. # Otherwise cella would return ‘1’,’2′,’23’. Nasty. # I need only coordinates to use them as index in graf.
Тогда будьте осторожны, чтобы ссылаться на мои корнаты как int(cella[0]) и int(cella[1]) потому что я имел их как строки из re.findall(r’d+’,str(cell))
Я считаю, что мое решение очень грязное и сложное, но, по крайней мере, оно работает. Я все еще жду, когда этот стек переполнится, поэтому я надеюсь, что у кого-то есть лучшая идея.