2012-02-27 7 views
-4
import re 

address1 = [] 
address2 = [] 
city = [] 
state = [] 
zipCode = [] 

modifiedShipping_address1 = (
    ['#### Example Rd. SE', 'City, OH\xa0#####', 'United States', ''], 
    ['### Street Ct', 'Apt B', 'City, SC\xa0#####', 'United States', '']) 

for i in modifiedShipping_address1: 
    address1.append(i[0]) 
    if len(i) == 4: 
     address2.append('') 
     cityIndex = str(i[1]).find(',') 
     city.append(i[1][:cityIndex]) 
     state_re = re.compile(', (.*?)\\xa0') 
     state_pat = re.findall(state_re, str(i[1]).strip()) 
     for i in state_pat: 
      state.append(i) 
      zip_re = re.compile('\\xa0(.*?)') 
      zip_pat = re.findall(zip_re, str(i[1]).strip()) 
      for i in zip_pat: 
       zipCode.append(i) 
    else: 
     address2.append(i[1]) 
     cityIndex = str(i[2]).find(',') 
     city.append(i[2][:cityIndex]) 
     state_re = re.compile(', (.*?)\\xa0') 
     state_pat = re.findall(state_re, str(i[2]).strip()) 
     for i in state_pat: 
      state.append(i) 
     zip_re = re.compile('\\xa0(.*?)') 
     # This line throws the exception: 
     zip_pat = re.findall(zip_re, str(i[2]).strip()) 
     for i in zip_pat: 
      zipCode.append(i) 
    state = state[:] 
    zipCode = zipCode[:] 

    print state 
    print zipCode 

は、コードは次の出力を生成しますか?ありがとうございました。 indexErrorがどこから来ているのか分かりません。のpython 2.7反復インデックスエラー実行

+2

無効なpythonコードです。字下げを修正してください。 – mykhal

+0

THUSは固定されています – phales15

+0

問題を示す完全な例を示してください。与えられたコードには、あなたの問題の再現を妨げる多くの問題があります。字下げは依然として違法なPythonです。引用符の開始または終了がない文字列があります。 "\ xa#"シーケンスは無効な文字列です。 address1、address2、city、state、およびzipCodeは宣言されていません。さらに、プログラムからの出力となるテキストと、まったく修正されていない完全な出力であるかどうかは不明です。 – Weeble

答えて

0

modifiedShipping_address1の最後の要素が空の文字列であるため、このエラーが発生しています。

1

あなたの問題は、ループ変数ごとに変数iを再利用することです。しかし、この時点でiが実際にループによって反復処理の最後の値である

for i in modifiedShipping_address1: 

例外をスローするコード行は iは、外側ループからループ変数であることを期待すると思われます
for i in state_pat: 

Pythonでは、forループは、ループ変数または内容に別のスコープを導入しないことに注意してください。これは関数内の別のローカル変数であり、ループが終了した後はリセットすることはありません。新しい値が割り当てられるまで、ループの最後の時間からその値が保持されます。この問題を回避するには、ループごとに異なる変数を使用します。好ましくは、より具体的な名前はiです。


作品(あるいは、少なくとも、あなたはそれがないと主張、問題を示している)のコードを投稿する将来的にはもっと気をつけてください、はっきりと自分の問題を説明するために、そしてことを確認するためにあなたの質問をプレビューするためのコードあなたが意図したとおりに表示されます。 DSMがあなたを参照するSCCEEページはすばらしいガイドです。あなたがそれに従うなら、あなたはより良い助けとより少ないdownvotesを得るでしょう。