2016-09-07 5 views
0

Ich habe eine Datei mit einer Reihe von Zahlen, die Leerzeichen und Doppelpunkte haben, und ich versuche, sie zu entfernen. Wie ich in diesem Forum gesehen habe, funktioniert die Funktion line.strip.split() gut, um dies zu erreichen. Gibt es eine Möglichkeit, den Leerraum und den Doppelpunkt auf einmal zu entfernen? Unter Anwendung des Verfahrens von Lorenzo geschrieben Ich habe dies:Entfernen von Leerzeichen und Doppelpunkt

train = [] 
with open('C:/Users/Morgan Weiss/Desktop/STA5635/DataSets/dexter/dexter_train.data') as train_data: 
    train.append(train_data.read().replace(' ','').replace(':','')) 
size_of_train = np.shape(train) 
for i in range(size_of_train[0]): 
    for j in range(size_of_train[1]): 
     train[i][j] = int(train[i][j]) 
print(train) 

Obwohl ich diesen Fehler:

File "C:/Users/Morgan Weiss/Desktop/STA5635/Homework/Homework_1/HW1_Dexter.py", line 11, in <module> 
    for j in range(size_of_train[1]): 
IndexError: tuple index out of range 
+4

Nun ... Sie verwenden keine gültige Python-Syntax! Besorgen Sie sich ein Python-Tutorial und lernen Sie die Schleifensyntax kennen. Und ** nachdem du das getan hast, schau dir Listen-Comprehensions an. – sascha

+0

Dies ist keine gültige Syntax! Untersuchen Sie das Listenverständnis. – Li357

+0

ok, werde ich das tun, danke, sollte ich diese Frage löschen? –

Antwort

1

Ich denke, die obige Syntax nicht korrekt ist, aber irgendwie wie pro Ihre Frage, können Sie ersetzen Funktion in Python vorhanden.

Wenn jede Zeile als aus dieser Datei Zeichenfolge Lesen Sie so etwas wie,

train = [] 
with open('/Users/sushant.moon/Downloads/dexter_train.data') as f: 
    list = f.read().split() 
    for x in list: 
     data = x.split(':') 
     train.append([int(data[0]),int(data[1])]) 

# this part becomes redundant as i have already converted str to int before i append data to train 
size_of_train = np.shape(train) 
for i in range(size_of_train[0]): 
    for j in range(size_of_train[1]): 
     train[i][j] = int(train[i][j]) 

Hier tun können ich Funktion ersetzen bin mit Raum mit leeren Zeichenfolge zu ersetzen, und ähnlich mit Doppelpunkt.

+0

Ich habe Ihre Methode versucht, aber ich bekomme diesen Fehler: train.append (train_data.replace ('', '').replace (':', '')) AttributError: '_io.TextIOWrapper' Objekt hat kein Attribut 'replace' –

+0

Kannst du meine bearbeitete Frage sehen? –

+0

Ja, ich habe meine Antwort bearbeitet, bitte versuchen Sie es. – lorenzofeliz

0

Sie haben kein Beispiel dafür angegeben, wie Ihre Eingabedatei aussieht, daher können wir nur spekulieren, welche Lösung Sie benötigen. Ich nehme an, dass Sie Ganzzahlen aus Ihrer Eingabetextdatei extrahieren und ihre Werte drucken müssen.

Hier ist, wie ich es tun würde:

  • Statt Leerzeichen und Doppelpunkte zu beseitigen versuchen, werde ich für die Ziffern werden Absuchen eines regular expression
  • Aufeinander folgende Ziffern würde eine Zahl
  • darstellen würde ich wandle diese Zahl in eine Ganzzahl um.

Und hier ist, wie es aussehen würde:

import re 

input_filename = "/home/evens/Temporaire/Stack Exchange/StackOverflow/Input_file-39359816.txt" 

matcher = re.compile(r"\d+") 

with open(input_filename) as input_file: 
    for line in input_file: 
     for digits_found in matcher.finditer(line): 
      number_in_string_form = digits_found.group() 
      number = int(number_in_string_form) 
      print(number) 

Aber bevor Sie mit diesem Code wegzulaufen, sollten Sie weiterhin Python lernen, weil Sie nicht über seine grundlegenden Elemente scheinen noch zu erreichen.

+0

Wie lernt man Python? –

+0

Sie könnten zum Beispiel mit dem [offiziellen Tutorial] (https://docs.python.org/3.5/tutorial/index.html) beginnen. – EvensF

+0

ok, ist das nötig ich habe zuerst Matlab benutzt und bin dann nach C++ gegangen. Ich dachte, Python sollte ziemlich einfach sein. –

Verwandte Themen