2016-03-28 4 views
0

上で正規表現を実行します。..リストにPythonの負荷CSVと私はCSVはこのようなのpythonを使用して、リストにファイルを読んでい項目

with open(myfile) as csvfile: 
     readCSV = csv.reader(csvfile, delimiter=',') 
     postcode_list = [] 
    for row in readCSV: 
     postcode = row[0] 
     postcode_list.append(postcode) 

これが正常に動作し、私はすべての郵便番号のリストで終わります。私はまた、彼らは適切に私は郵便番号が正規表現に一致しない場合に表示するエラーを取得しようとしています

^[A-Z]{1,2}[0-9]{1,2}[A-Z]?s[0-9][A-Z][A-Z]$ 

を形成していることを確認するために郵便番号をチェックする正規表現文を持っています。これを行うにはリストを繰り返し処理する必要がありますか、またはCSVからリストへの変換中にそれを行う方法がありますか?

+1

正規表現でほんの少し改善。 '^ [AZ] {1,2} [0-9] {1,2} [AZ]?S [0-9] [AZ] {2} $' –

+0

私は変化を見ることができますが、改善を説明することができます? – fightstarr20

+0

無効なコードが見つかった場合に救済するかどうかによって決まります。そのためには、リストに追加する前に確認してください。そうでない場合は、リストに追加する前に確認してください。ただし、_bad_インデックスを別のリストに追加してください。この方法では、インデックスのリストが間違っています。 – sln

答えて

0

は、2番目のforループ内でこれを行います。 reモジュールからPythonパターンマッチングオブジェクトを作成します。インスタンスメソッドmatch(string)を使用して郵便番号と照合してください。このメソッドがtrueを返した場合、そこにマッチであり、検査される郵便番号がpostcode_listに追加されるべきです。一致がfalseを返した場合、break

は高価なインスタンス化とガベージコレクションを避けるためにforループの外に一致するオブジェクトを作成します - それは正規表現オートマトンを構築するために時間がかかります。

関連する問題