String durchsuchen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Tom12
User
Beiträge: 48
Registriert: Mittwoch 17. Januar 2018, 17:38

Hallo zusammen,

ich habe zurzeit ein Problem mit einem String,
Inhalt: '2a 00 4b 46 ff ff 0e 10 84 : crc=84 YES\n', '2a 00 4b 46 ff ff 0e 10 84 t=20875\n'
das einzige was ich aus dem string brauche ist "20875" (=Temperatur).
Wie kann ich diesen Teil (der jedesmal ander sein kann) herausfiltern.
PS: Sobald es unter 10 Grad hat ist der Teil auch nurnoch 4 Stellig.
Wie könnte ich dass am blödesten anstellen? Ich habe bischen mit split getestet aber ziemlich gescheitert.
Bitte um Hilfe

MfG
Tom12
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Woher kommt denn der String? Das sieht nämlich eher nach zweien aus. In Form eines Tupels.
Tom12
User
Beiträge: 48
Registriert: Mittwoch 17. Januar 2018, 17:38

__deets__ hat geschrieben: Freitag 19. April 2019, 18:24 Woher kommt denn der String? Das sieht nämlich eher nach zweien aus. In Form eines Tupels.
er kommt aus einer readlines() Abfrage, wenn er hier mehrere Zeilen ausließt steckt er diese dann in einen Tupel? Ich dachte er schreibt diese zusammen und welche Auswirkung hat dass ganze dann?
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

readlines sollte eine Liste liefern. Also kannst du über die Zeilen iterieren. Mit eine for Schleife. Und dann suchst du nach t=, und wenn das in der Zeile ist, Splittes und nimmst du die zweite Hälfte.
Tom12
User
Beiträge: 48
Registriert: Mittwoch 17. Januar 2018, 17:38

__deets__ hat geschrieben: Freitag 19. April 2019, 18:30 readlines sollte eine Liste liefern. Also kannst du über die Zeilen iterieren. Mit eine for Schleife. Und dann suchst du nach t=, und wenn das in der Zeile ist, Splittes und nimmst du die zweite Hälfte.
Dann habe ich aber immer noch den ganzen String zwar nur den zweiten Teil aber immer noch zu viel.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Außer einem newline - nein. Zeig mal bitte was du da machst & was dann rauskommt.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Code: Alles auswählen

lines = '2a 00 4b 46 ff ff 0e 10 84 : crc=84 YES\n', '2a 00 4b 46 ff ff 0e 10 84 t=20875\n'

for line in lines:
    if "t=" in line:
        print(line.split("=")[1])
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Weisen die Daten stets das gleiche Schema auf - also die Temperatur, sofern vohanden, an der gleichen Position?

Gerade gesehen, was Du machst. Du solltest an t= splitten.

Außerdem kommen die Daten nicht aus readlines(), denn dann stünden die einzelnen Zeilen getrennt als Strings in einer Liste. Das ist bei Dir nicht der Fall.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@kbr, __deets__: das ist das ganz normale Format eines One-Wire-Temperatursensors am Raspberry-Pi. Dazu gibts es auch schon eine Million Leseroutinen.
Z.B hier: viewtopic.php?f=1&t=44538#p338596
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Das kommt davon, wenn man auf einem mobile-device liest und schreibt: Der Beitrag war von __deets__ und nicht vom TE und das Komma war nicht im String und damit stimmt auch alles.
@Sirius3: wenn es bereits so viele Beispiele geben sollte, dann ist dem TE ja geholfen.
Antworten