2016-05-18 5 views
3

bekomme ich folgende FehlerPython „String-Index außerhalb des Bereichs“ bei dem Versuch, String-Daten aus einer externen Datei

Traceback (most recent call last): 
    File "script.py", line 16, in <module> 
     if char[x] == " ": 
IndexError: string index out of range 

für diese Zeilen Code

for file in files: 
    f = open(file, "r") 
    file_num += 1 
    for line in file: 
     for char in line: 
      if char[x] == " ": 
       break 
      else: 
       x += 1 

Ich versuche zu lesen Lasse es eine Datei zeilenweise lesen und wähle die Region zwischen den Leerzeichen aus, die als String-Variable an anderer Stelle im Skript gespeichert werden sollen. Ich bin so ziemlich ein totaler Noob, also würde jede Hilfe geschätzt werden.

+0

@free_mind Es würde nichts tun. Wenn "line" nicht iterierbar ist, wird die Schleife nicht eingegeben. Das Problem ist 'char [x]' was nicht sinnvoll ist, da 1) 'x' nicht definiert ist 2)' x' wird nie zwischen den Loops zurückgesetzt 3) 'char' soll eine Zeichenkette der Länge 1 –

+0

sein char ist bereits ein Zeichen, keine Zeichenkette, also sollten Sie 'if char ==" ":' – ozgur

Antwort

2

char wird immer ein String der Länge 1. sein Nach einigen char s sind nicht ' ', x einen gewissen Wert sein, der größer als 0 ist (was ich nehme an, das ist es, was x zu initialisiert). Dann erhalten Sie die IndexError.

Ihr Code kann stark vereinfacht werden:

for file in files: 
    f = open(file, "r") 
    file_num += 1 
    for line in file: 
     for char in line: 
      if char == ' ': 
       break 
0
file_num = len(files) 
for file in files: 
    with open(file, 'r') as f: # with closes the file for you 
    words = line.split() # split the line by white space into a list 
Verwandte Themen