Seite 1 von 1
Syntax Error :(
Verfasst: Sonntag 7. Juni 2020, 18:29
von Pixxelrasher
Hi ,
ich habe heute Vormittag einen Code geschrieben der Daten von einer API bekommt. Dort dann die Zahl herauszieht und dann dies in einer InfluxDB speichert. Mein Problem ist jetzt, dass ich einen Syntax Error kriege aber keinen Fehler finde.
File "test.py", line 15
re = re.findall("\d+\.\d+", str(api))
^
SyntaxError: invalid syntax
Hier ist mein Code:
from pycoingecko import CoinGeckoAPI
cg = CoinGeckoAPI()
from influxdb import InfluxDBClient
import re
client = InfluxDBClient(host='localhost', port=8086)
client.switch_database('coins')
api = 0
coins = ["ethereum", "bitcoin"]
for i in coins:
api = str(cg.get_price(ids=
, vs_currencies='usd')
re = re.findall("\d+\.\d+", str(api))
for item in re:
ready = float(item)
data = [
{"measurement": i,"tags": {"currency": "usd","tag": "price"},"fields": {"value":ready}}
]
client.write_points(data)
Bitte helft mir
LG Pixxel
Re: Syntax Error :(
Verfasst: Sonntag 7. Juni 2020, 18:38
von __deets__
Der Fehler liegt in der Zeile davor. Schau dir mal deine Klammern ganz genau an.
Re: Syntax Error :(
Verfasst: Sonntag 7. Juni 2020, 18:46
von Pixxelrasher
Danke für die Hilfe
Re: Syntax Error :(
Verfasst: Sonntag 7. Juni 2020, 19:03
von Sirius3
@Pixxelrasher: alle Importe sollten am Anfang stehen und nicht durch irgendeinen anderen Code unterbrochen werden.
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
Benutze keine Abkürzungen, wenn Du coin_gecko meinst, dann schreib das auch und nicht cg.
`i` ist ein schlechter Name für eine Crypto-Währung.
`get_price` liefert ein Wörterbuch, das braucht man nicht in einen String umwandeln um dann mit regulären Ausdrücken eine Zahl zu suchen.
Warum nennst Du das Ergebnis des Aufrufs dann `api`? Das `api=0` am Anfang wird auch nie benutzt.
Zudem solltest Du den Namen `re` nicht durch eine Liste ersetzen, denn das geht beim zweiten Schleifendurchlauf schief.
Warum nennst Du den Preis `ready`?
Code: Alles auswählen
from pycoingecko import CoinGeckoAPI
from influxdb import InfluxDBClient
coins = ["ethereum", "bitcoin"]
client = InfluxDBClient(host='localhost', port=8086)
client.switch_database('coins')
coin_gecko = CoinGeckoAPI()
prices = coin_gecko.get_price(ids=coins, vs_currencies='usd')
for currency, price in prices.items():
data = [{
"tags": {"currency": "usd", "tag": "price"},
"measurement": currency,
"fields": {"value": price["usd"]}
}]
client.write_points(data)
Re: Syntax Error :(
Verfasst: Montag 8. Juni 2020, 10:20
von Pixxelrasher
Hi ich wolllte fragen ob du mir den Code nochmal erklären kannst da es mein erstes Programm ist.

Re: Syntax Error :(
Verfasst: Montag 8. Juni 2020, 10:26
von Sirius3
Was verstehst Du daran konkret nicht? Die meisten Zeilen sind von dem kopiert, was Du schon selbst geschrieben hast.
Und den Umgang mit Wörterbüchern solltest Du beherrschen, wenn nicht, arbeite das Kapitel dazu noch einmal durch.
Re: Syntax Error :(
Verfasst: Montag 8. Juni 2020, 10:27
von __deets__
Wie waere es, wenn du moeglichst konkrete Fragen stellst? Denn 'Code erklaeren' kann ja alles heissen. Verstehst du importe, kennst du for-Schleifen, etc. Hier kann keiner dein Niveau einschaetzen, eine Erklaerung kann also beliebig ausarten. Und das wird eher nicht passieren, wenn du konkrete Fragen hast, stell die.
Re: Syntax Error :(
Verfasst: Montag 8. Juni 2020, 10:59
von Pixxelrasher
Alles klar ok sorry. Ich würde gerne verstehen wie die for Schleife mit den zwei Attributen currency und price und der item() Funktion funktioniert.
Re: Syntax Error :(
Verfasst: Montag 8. Juni 2020, 11:01
von __deets__
Das ist eine Methode der Woerterbuch-Klasse. Und der Begriff fuer das binden von zwei (oder mehr) Werten an Namen in einer for-Schleife, oder auch einem normalen Statement wie hier
:
nennt sich tuple-unpacking. Das wird auch in der Doku erklaert.
Re: Syntax Error :(
Verfasst: Montag 8. Juni 2020, 11:02
von Pixxelrasher
Danke