Python – Wie man Strings aus jeder Zeile in Textdatei extrahiert?

Ich habe eine Textdatei, die die Anzahl der aktivierten Monitore erkennt. Ich möchte bestimmte Daten aus jeder Zeile extrahieren und in eine Liste aufnehmen.

Die Textdatei sieht so aus:

[EnumerateDevices]: Enumerating Devices. DISPLAY\LGD03D7\4&ACE0355&1&UID68092928 : Generic PnP Monitor DISPLAY\ABCF206\4&ACE0355&1&UID51249920 : Generic PnP Monitor // // here can be more monitors... // 2 matching device(s) found. 

Ich muss die Nummer nach der UID in der Mitte des Textes bekommen: 68092929, 51249920 ..

Ich dachte daran, das nächste zu machen

ein. Geben Sie jede Zeile in Text ein

B. Sehen, ob "UID" String existiert

C. Wenn es existiert: Split (hier bekomme ich, wie es zu tun ist .. aufgeteilt durch ("") oder ("&")

Gibt es eine gute Idee, die Sie beraten können? Ich verstehe nicht, wie kann ich die Nummern nach der UID bekommen (wenn die nächste Nummer länger ist als die vorherigen), wie bekomme ich einen Befehl, der tut: ("Wenn du UID String bekommst, bekommst du alle Daten bis Du siehst zuerst leer ")

irgendeine Idee? Vielen Dank

7 Solutions collect form web for “Python – Wie man Strings aus jeder Zeile in Textdatei extrahiert?”

Verwenden Sie reguläre Ausdrücke:

 import re p =re.compile(r'.*UID(\d+)') with open('infile') as infile: for line in infile: m = p.match(line) if m: print m.groups[0] 

Ich würde einen regelmäßigen Ausdruck verwenden, um die UID zu extrahieren

z.B

 import re regexp = re.compile('UID(\d+)') file = """[EnumerateDevices]: Enumerating Devices. DISPLAY\LGD03D7\4&ACE0355&1&UID68092928 : Generic PnP Monitor DISPLAY\ABCF206\4&ACE0355&1&UID51249920 : Generic PnP Monitor // // here can be more monitors... // 2 matching device(s) found.""" print re.findall(regexp, file) 

Sie können die split() Methode verwenden.

 s = "hello this is a test" words = s.split(" ") print words 

Die Ausgabe des obigen Snippets ist eine Liste mit: ['hello', 'this', 'is', 'a', 'test']

In deinem Fall kannst du dich auf den Teilstring "UID" aufteilen und das zweite Element in der Liste holen, um die Nummer zu bekommen, die du suchst.

Siehe docs hier: https://docs.python.org/2/library/string.html#string.split

Das ist ein bisschen esoterisch, aber macht den Trick mit einem Listenverständnis:

 [this.split("UID")[1].split()[0] for this in txt.split("\n") if "UID" in this] 

Die Ausgabe ist die Liste, die du suchst Ich nehme an: ['68092928', '51249920']

Erläuterungen:

  1. Teilen Sie den Text in Zeilen (Split ("\ n")
  2. Wähle nur Zeilen mit UID innen (für diese in … wenn "UID" in diesem)
  3. In den verbleibenden Zeilen, aufgeteilt mit "UID".
  4. Sie wollen nur ein Element nach UID also die [1]
  5. Die resultierende Zeichenfolge enthält die ID und einen Text, der durch ein Leerzeichen getrennt ist. Wir verwenden einen zweiten Split (), der auf Leerzeichen verweist.
 >>> for line in s.splitlines(): ... line = line.strip() ... if "UID" in line: ... tmp = line.split("UID") ... uid = tmp[1].split(':')[0] ... print "UID " + uid ... UID 68092928 UID 51249920 

Sie können die Methode find() verwenden:

 if line.find('UID') != -1: print line[line.find('UID') + 2 :] 

Docs https://docs.python.org/2/library/string.html#string.find

Wenn du die ganze Datei sofort liest, sonst, wenn Zeile für Zeile einfach die erste Zeile in line.split ()

 for elem in file.split(): if 'UID' in elem: print elem.split('UID')[1] 

Der Split wird bereits "Junk" gestrichen, jeder Elem, der die 'UID' String enthält, wird alle auf int () gesetzt oder einfach als String gedruckt

  • Fügen Sie in jeder Zeile einer .txt-Datei eine bestimmte Zeichenfolge mit Python hinzu
  • Pil zeichnen Text mit verschiedenen Farben
  • Erhalten Indizes des Originaltextes aus nltk word_tokenize
  • Python lesen Zeilen einer ganzen Datei und effizient speichern die, die ich in Listen wollen
  • Gibt es eine Möglichkeit, das Tkinter Text-Widget nur zu lesen?
  • Entfernen von nicht brechenden Räumen aus Strings mit Python
  • Hinzufügen von erweiterten Funktionen zu einem tkinter Text-Widget [geschlossen]
  • Einbetten von Text in PNG
  • Getting die Gesamtzahl der Zeilen in einem Tkinter Text-Widget?
  • Einfügen der Zeile an der festgelegten Position einer Textdatei
  • Python Tkinter Text Widget mit Auto & Custom Scroll
  • Python ist die beste Programmiersprache der Welt.