2016-05-18 21 views
3

私は私がしようとしている次のエラーにコードPythonの「範囲外の文字列インデックス」文字列データを読み取ろうと、外部ファイルから

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 

のこれらの行のための

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

を取得行ごとにファイルを読み込み、スペースの間の領域を選択して、スクリプト内の別の場所に文字列変数として格納します。私はかなり多くの騒ぎですので、どんな助けもありがとうございます。

+0

@free_mindそれは何もしないだろう。 'line'が反復可能でない場合、ループは入力されません。 1) 'x'が定義されていないので2)' x'はループ間で決してリセットされません3) 'char'は長さ1の文字列であると仮定されます –

+0

charは既に文字であり、文字列ではないので、 'if char ==" ":' – ozgur

答えて

2

charは常にいくつかのchar sが' 'ではありません後、xは(私はこれがxに初期化されているものであると仮定している)0以上であるいくつかの値になります長さ1 の文字列になります。その後、あなたはIndexErrorを取得しています。

あなたのコードが大幅に簡素化することができます。

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 
関連する問題