Guten Abend,
ich bin gerade dabei bspw. automatisch Aktien auf Basis einer Telegram Nachricht zu kaufen. Dazu erhalte ich die Nachricht im folgenden Layout
Aktie: Unternehmen XY
Strategie: XY
Limit: XY
Um diese Eingabewerte in den nächsten Schritten zu verwenden muss ich die übermittelten Informationen trennen, z.B. Share = Unternehmen XY, Strategy = XY usw. Die Informationen werden gebündelt übermittelt, die einzelnen Zeilen sind lediglich mit einem Zeilenumbruch getrennt. Über den Strip operator habe ich kein Ergebnis erzielen können, ließe sich dies mit Regulären Ausdrücken umsetzen?
Am Ende möchte ich beispielsweise den Wert nach "Aktien: " und vor "Strategie: " in eine separate Variable "Share" überführen usw., im Nachgang die anderen beiden Zellen.
Jegliche Tipps sind gerne gesehen.
Vielen Dank bereits im Voraus.
Mehrzeiligen Input trennen
Irgendwas wird ja bestimmt passiert sein, evtl gab es eine Fehlermeldung? Die sind meist sehr hilfreich für die Problemlösung, also Fehlermeldungen möglichst mit in den Thread kopieren.Cruzad0r hat geschrieben: Montag 7. Oktober 2019, 23:18 Über den Strip operator habe ich kein Ergebnis erzielen können, ließe sich dies mit Regulären Ausdrücken umsetzen?
strip() ist übrigens eine Methode auf Zeichenketten und kein Operator. Davon abgesehen braucht man es auch gar nicht. Und den Sinn von regulären Ausdrücken sehe ich hier ebenso wenig, da Python für diesen Bereich genug eigene Fähigkeiten mitbringt.
Ich würde das Parsen eine Datensatzes so angehen:
Code: Alles auswählen
data = """\
Aktie: Unternehmen XY
Strategie: XY
Limit: XY"""
result = dict(line.split(': ') for line in data.split('\n'))
print(result)
Liegen die Datensätze denn jeweils als einzelne Strings vor (so wie hier beim Beispiel)? Oder sind die alle zusammen in einem großen String verpackt? Dann stünde als nächstes die Herausforderung an, wie man diese auseinander friemelt...
Und wenn man wirklich nur zwei Elemente als Ergebnis will, zweiten Parameter nicht vergessen:
Code: Alles auswählen
result = dict(line.split(': ', 1) for line in data.split('\n'))
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Wobei das nur funktioniert wenn die letzte Zeile nicht auch durch ein '\n' abgeschlossen wurde. Die `splitlines()`-Methode ist an der Stelle sicherer.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
@Cruzad0r: Hier mal etwas ordentlicher aufbereitet:
Das Skript ist direkt von der Kommandozeile ausführbar. Ich vermute, dass du Anfänger bist. Es soll dir daher nur als Orientierung dienen. Du wirst dich schon etwas mehr mit Python beschäftigen müssen, da solche Aufgabenstellungen zum Grundlagenwissen gehören. Ein komplettes Programm für dein Vorhaben wird dir wahrscheinlich niemand schreiben...
Code: Alles auswählen
#!/usr/bin/env python3
TEST_DATA = """\
Aktie: Unternehmen XY
Strategie: XY
Limit: XY"""
def parse_string(data):
info = {}
for line in data.splitlines():
category, value = line.split(': ', 1)
info[category] = value
return info
def main():
info = parse_string(TEST_DATA)
print('Aktie =>', info['Aktie'])
print('Strategie =>', info['Strategie'])
print('Limit =>', info['Limit'])
if __name__ == '__main__':
main()