Leere Zeilen in der Konsole

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
__Jana__
User
Beiträge: 3
Registriert: Freitag 30. August 2019, 12:51

Hallo!
Ich hätte gerne, dass in der Konsole nur Zeilen ausgegeben werden, die nicht leer sind.
So sieht es beispielsweise momentan aus:
USB connection COM4








Measured (ADC1): 0.66637 V


So hätte ich es gerne:
USB connection COM4
Measured : 1 V



Zur Funktion mit der Ausgabe "USB connection COM4":

def getCOM():
comlist = serial.tools.list_ports.comports()
for element in comlist:
if ("USB Serial Port" in element.description):
com = str(element.device)
print('USB connection', com)
return com

Ich bekomme aber beim Aufruf vieler Funktionen diese Leerstellen.


Jegliche Tipps werden dankbar angenommen :)
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Wenn die Anzahl der Whitelines variiert:

Code: Alles auswählen

import os
test_string = """USB connection COM4








Measured (ADC1): 0.66637 V"""
    
    
string_without_empty_lines = os.linesep.join([x for x in test_string.splitlines() if x])
print(string_without_empty_lines)

Wenn die Anzahl der Whitelines feststeht:

Code: Alles auswählen

test_string = """USB connection COM4








Measured (ADC1): 0.66637 V"""


string_without_empty_lines = test_string.replace(9*'\n','\n')
print(string_without_empty_lines)

Sonstige Anmerkungen:

In Python werden Funktionennamen klein_mit_unterstrich geschrieben, wäre dann bei dir also get_com():

comlist ist auch kein guter Variablenname, da Datentypen nichts im Namen zu suchen haben. (Ich weiß, habe ich in dem obigen beispiel auch gemacht, dient aber nur zur Veranschaulichung.)

bei der Bedingung vom If brauchst du keine Klammern.

bei deinem print würde ich den String mit String-Formatierung zusammenstückeln, einfach mal suchmaschinen.

Beim nächsten Mal, wenn du Code postest, benutz bitte den Code-Tag, sonst geht die Einrückung verloren. Dafür einfach im vollständigen Editor auf das </> Symbol klicken.
Zuletzt geändert von Jankie am Freitag 30. August 2019, 13:48, insgesamt 2-mal geändert.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

@__Jana__: wahrscheinlich bekommst Du diese Leerzeilen, weil tatsächlich Leerzeilen über die serielle Schnittstelle gesendet werden. Wenn Du das nicht willst, mußt Du die Leerzeilen ausfiltern. Dazu wäre es im übrigen gut, wenn Du den Code zeigst, der die Leerzeilen ausgibt, und nicht irgendeine andere Funktion, die Dir gerade einfällt.

Wenn Du ein bestimmtes USB-Gerät suchst, ist es besser, Du testest auf hwid oder product, etc. statt auf description. element.device ist schon ein String.

Code: Alles auswählen

def get_com_device():
    ports = serial.tools.list_ports.comports()
    for port in ports:
        if "USB Serial Port" in port.description:
            print('USB connection', port.device)
            return port.device
__Jana__
User
Beiträge: 3
Registriert: Freitag 30. August 2019, 12:51

@Sirius3
Genau das wird es sein, über die serielle Schnittstelle werden noch mehr Daten geschickt, die ich aber nicht anzeigen lassen möchte.
Der Code ist leider echt groß und nicht einfach in ein Minimalbeispiel komprimierbar.

Wie filtert man die Leerzeichen von der seriellen Schnittstelle? Habe bisher online leider nichts gefunden.

Danke!!
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

Das macht man genau gleich, wie bei jedem anderen String-Vergleich auch. Woher die Zeilen kommen, ist ja Python egal.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

So wie auch aus jeder anderen Quelle: per string.strip.

Alternativ kannst du auch beim print auf das implizite newline verzichten, wenn du Ausgaben der seriellen Daten machst. mit

Code: Alles auswählen

print(zeile, end="")
Antworten