2017-07-27 8 views
-3

Bitte beachten Sie folgende Bild, das das Format der Textdatei zeigt. Ich muss die Dimensionen der Datenmatrix extrahieren, die durch die erste Zeile in der Datei angezeigt wird, hier 49 * 70 * 1 für den Fall, der durch das Bild gezeigt wird. Beachten Sie, dass die Länge des Namens "gd_fac" variieren kann. Wie kann ich diese Zahlen als Ganzzahlen extrahieren? Ich benutze Python 3.6.extrahieren Sie die Abmessungen aus den Kopfzeilen der Textdatei

Text file

Antwort

1

Spezifikation ist nicht ganz klar. Ich gehe davon aus, dass die gewünschten Informationen immer in der ersten Zeile stehen und immer in Klammern stehen. Danach:

with open(filename) as infile: 
    line = infile.readline() 
    string = line[line.find('(')+1:line.find(')')] 
    lst = string.split('x') 

Dies erstellt die Liste lst = [49, 70, 1].

Was geschieht hier:.. Zuerst habe ich öffnen Sie die Datei (Sie filename mit dem Namen der Datei als String Die with ... as ... Struktur stellt sicher, ersetzen müssen, dass die Datei nach der Verwendung geschlossen wird Dann las ich die erste Danach wähle ich nur die Teile der Linie, die nach dem Öffnen fallen, (, und vor dem Schließen paren ). Schließlich breche ich die Zeichenfolge in Teile, mit dem Zeichen x als Trennzeichen.Das erstellt eine Liste, die enthält die Werte in der ersten Zeile der Datei, die zwischen Klammern stehen und durch x getrennt werden.

+0

Ich mag Ihre Lösung. =) – thesonyman101

+2

upvoted für Ihre nette Antwort. Minen ein wenig länger, du hast es wirklich schön und einfach gemacht. – thesonyman101

0

Was das ist, sucht es nach "gd_fac " dann, wenn es da ist, entfernt alle unnötigen Sachen und ersetzt sie mit genau dem, was Sie wollen.

with open('test.txt', 'r') as infile: 
     for line in infile: 
      if("gd_fac" in line): 
       line = line.replace("gd_fac", "") 
       line = line.replace("x", "*") 
       line = line.replace("(","") 
       line = line.replace(")","") 
       print (line) 
       break 

OUTPUT: "49x70x1"

0

Da Sie, dass die Länge von 'gd_fac' van variabel sein, wird unter Verwendung beste Lösung für reguläre Ausdrücke erwähnt haben.

import re 
with open("a.txt") as fh: 
    for line in fh: 
     if '(' in line and ')' in line: 
      dimension = re.findall(r'.*\((.*)\)',line)[0] 
      break 
print dimension 

Ausgang:

'49x70x1' 
Verwandte Themen