Python räkna antalet celler från google sheets

Permalänk
Medlem

Python räkna antalet celler från google sheets

Hej! Jag är vääldigt ny på python och har inte stenkoll men tänkte bästa sättet är väl att bara ge sig in i smeten.

Så det jag försöker göra är att först dra ut data från google sheet och printa ut det.
Det fungerar bra, del två är att jag vill ha en count som listar hur många av samma det finns, exempelvis
20 "23.1", 32 "22.1".

Det är här jag går bet, jag lägger koden i spoiler, jag är som sagt väldigt ny och försöker förstå allt, tittat, läst och testat massa varianter, men resultatet av koden är att jag enbart får ut en count på själva den variablen jag använder för att generea listan från google sheets.

(Sheetid är censuerat)

import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from collections import Counter

# If modifying these scopes, delete the file token.json.
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]

# The ID and range of a sample spreadsheet.
SAMPLE_SPREADSHEET_ID = ""
SAMPLE_RANGE_NAME = "Sheet1!A2:B7"

def main():
"""Shows basic usage of the Sheets API.
Prints values from a sample spreadsheet.
"""
global count
creds = None
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists("token.json"):
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
"credentials.json", SCOPES
)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open("token.json", "w") as token:
token.write(creds.to_json())

try:
service = build("sheets", "v4", credentials=creds)

# Call the Sheets API
sheet = service.spreadsheets()
result = (
sheet.values()
.get(spreadsheetId=SAMPLE_SPREADSHEET_ID, range=SAMPLE_RANGE_NAME)
.execute()
)
values = result.get("values", [])

version = [['values'.count(item), item] for item in set('values')]

print(version)
except HttpError as error:
print(error)
if __name__ == "__main__":
main()

Dold text

Resultatet av koden blir [[1, 'v'], [1, 'e'], [1, 'a'], [1, 'l'], [1, 'u'], [1, 's']] alltså bokstäverna i variablen values.
Vad är det jag missar?

Tack på förhand.

Visa signatur

Chassi: Fractal design Define C Mobo: aorus x570 elite
Cpu Ryzen 3600 Kylare noctua nh-d15Gpu 7900XT Ram g.skill flare x black
Kingston a2000 1TB 2x PSU: EVGA SuperNova 850 G2

Permalänk
Medlem

values = result.get("values", [])

version = [['values'.count(item), item] for item in set('values')]

Du har 'values', vilket därmed behandlar texten "values", snarare än variablen som heter values. Kanske finns andra problem, men det är jobbigt att läsa Pythonkod som inte är indenterad.

Visa signatur

i5-7600k . GTX 1080 . 16 GB

Permalänk
Medlem
Skrivet av johanandersson:

values = result.get("values", [])

version = [['values'.count(item), item] for item in set('values')]

Du har 'values', vilket därmed behandlar texten "values", snarare än variablen som heter values. Kanske finns andra problem, men det är jobbigt att läsa Pythonkod som inte är indenterad.

Alright det förklarar den aken, när jag tar bort det istället får jag annat
fel

TypeError: unhashable type: 'list'

som pekar på set(values)]
^^^^^^^^^^^

Får klura vidare

Visa signatur

Chassi: Fractal design Define C Mobo: aorus x570 elite
Cpu Ryzen 3600 Kylare noctua nh-d15Gpu 7900XT Ram g.skill flare x black
Kingston a2000 1TB 2x PSU: EVGA SuperNova 850 G2

Permalänk
Medlem

Ibland räcker det att fråga och man själv kommer vidare, "set" var problemet efter som det redan är en lista och därför fungerade det typ inte. Eller något sådant. Jag är inte ett proffs på detta haha.

Visa signatur

Chassi: Fractal design Define C Mobo: aorus x570 elite
Cpu Ryzen 3600 Kylare noctua nh-d15Gpu 7900XT Ram g.skill flare x black
Kingston a2000 1TB 2x PSU: EVGA SuperNova 850 G2