2017-04-01 9 views
-2

次のコードを実行すると、 "IdentationError:unexpected indent"というエラーが発生します。しかし、私はなぜそれを解決できるのか分かりません。エラーは最初のifステートメントにあります。Python:ループ内の正規表現によって生成される配列 "予期しないインデントエラー"

import re 
import xlrd 
workbook = xlrd.open_workbook(file_location) 
sheet = workbook.sheet_by_index(0) 
UOB = [sheet.cell_value(r,14) for r in range(sheet.nrows)] 
count = {} 
Myset = set() 
for x in range (sheet.nrows): 
    match = re.findall(",*([\w]*[College]*[Department]*[\w ]*),[ ]   
[The]*Uni[\w.]*[ ]of[ ]Bahr[ai]*[ei]*n,*([\w ]*[College]*[Department]*[\w ]*),",UOB[x]) 
    if match[0][0]!='': 
     if match[0][0] in Myset: 
      count[match[0][0]]+=1 
     else: 
      Myset.add(match[0][0]) 
      count[match[0][0]]=1 

    else: 
     if match[0][1] in Myset: 
      count[match[0][1]]+=1 
     else: 
      Myset.add(match[0][1]) 
      count[match[0][1]]=1 
+1

は、単一の行に、私は混合タブとスペースを参照 –

+1

であるためにあなたの正規表現を修正します。それを修正してください。 (私は、Pythonが字下げの問題に遭遇する前にエラーがあったはずの不正な文字列リテラルも見ています) – user2357112

+0

その正規表現は意味をなさない。 '[The] *'? '[College] *'?文字クラスと '*'はどちらも不適切です。 – user2357112

答えて

0

は、変数にあなたの文字列を設定し、正しく複数行に収まるように、それをクリーンアップ:

z = ( ",*([\w]*[College]*[Department]*[\w ]*),"  + 
     "[ ][The]*Uni[\w.]*[ ]of[ ]Bahr[ai]*[ei]*n," + 
     "*([\w ]*[College]*[Department]*[\w ]*)," ) 

for x in range (sheet.nrows): 
    match = re.findall(z,UOB[x]) 
+0

正規表現リストが空であれば "リストインデックスが範囲外です" – z1234

+0

@saraそれをインデックス化できない場合は、match [0] [0]!= '' 'の代わりに "if match"が必要になるでしょう。http://stackoverflow.com/questions/14992787/python-regex-findall-returns -a-list-why-does-does-try-to-access-the-list-element – litepresence

+0

私は問題が正規表現によって引き起こされると思います – z1234

関連する問題