'How do I extract data as strings from Google Sheets column?
I'm in the process of learning the Google Sheets API with Python. I'm trying to extract data from a column in the spreadsheet, but it extracts it as a list of lists. For example, if the list contains the following names in Column A of the spreadsheet.
Alexandra
Andrew
Anna
Becky
Benjamin
I started off by importing the gspread library and initial variables, then grabbed the entire column, stored it into a variable, and printed.
import gspread
sa = gspread.service_account()
sh = sa.open("gSheets-Python")
wks = sh.worksheet("Class Data")
sheetsColA = wks.get('A2:A')
print(sheetsCol)
This yielded the following console output.
[['Alexandra'], ['Andrew'], ['Anna'], ['Becky'], ['Benjamin']]
Suppose that I want to store the 3rd entry from this list ("Anna"), so I ran print(sheetsCol[2]), which yielded ['Anna']. In another example, I noticed that they ran print(wks.acell(A4).value) which yielded Anna, without the brackets.
Attempting to do the same on the get function, I get an error. I ran print(sheetsCol[2].value), hoping to get Anna, but instead got the following error.
Traceback (most recent call last):
File "script.py", line 24, in <module>
print("sheetsCol[2] = ", sheetsCol[2].value, "\n")
AttributeError: 'list' object has no attribute 'value'
How do I get Anna as just a string in a variable, instead of ['Anna']? Does it need to be in the ['Anna'] format if I want to use the code to paste it back into the sheet in a different location? Like if I want to move or copy Anna to the D4 cell.
The long-term goal is to grab data from a column, and process them one-by-one for web scraping with BeautifulSoup4, then paste the web-scraped results in another column in the sheet. The web scraping is for another discussion, but is this the correct overall approach?
Solution 1:[1]
Solutions:
- Just use starred expression to unpack list
print(*["txt"]) - Use for loop to run through values.
- Use list indexes to get value
var = lst[0]
The error occurs because: sheetsCol[2] is a list, I may suppose that it is the list of wks.acell objects, therefore u can go through it and acquire all values. Example:
for i in sheetsCol[n]:
print(i.value)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
