2017-06-23 4 views
0

find()メソッドを使用して、.PDFからスクレイプされたテキストのリスト内の郵便番号を検索しようとしています。以下は、これまでのテキストと私のコードの例です。私はエラーなく実行することができますが、出力を生成しません。 'SOC'文字列を使用して都市、州、およびzipを含む行を検索し、replace()メソッドを使用して状態を ""に置き換え、zipを ""で置き換えたいと考えています。問題は、州が常にNYであり、変数や文字列で設定できるのに対し、zipはいくつかの異なる郵便番号になる可能性があるため、スクラップされたテキストに何が含まれるかはわかりません。したがって、私はリスト内でそれらをすべて入力して、コードを見つけたものに置き換えることができるので、テキストを調べてリストと比較できるようにfind()メソッドを使用したいと考えていました。Pythonリストを含むFind()メソッドを使用する

Smith, Joel 
Soc Sec#: xxx-xx-1111 
56 Monroe Drive 
Smithville, NY 14221 
27 

Smith, Nicole M 
Soc Sec#: xxx-xx-2222 
56 Monroe Dr 
Smithville, NY 14226 
25 

    state = "NY" 
    zip = ["14206", "14215", "14218", "14221", "14226"] 
# Searches for City 
    if line.find('Soc') != -1: 
     if line.find(str(zip)) in zip != -1: 
      print(lines[indx].strip().replace(state, "").replace(zip, "")) 
+0

あなたはあなたの状態を知っているし、あなたの郵便番号は、規則的なパターンに従っている場合は、使用することができます... 're'gexpressions。 –

答えて

0

最初str.findを使用することなく、状態だけでなく、郵便番号の両方を交換するために正規表現を使用することができます。 re.sub

>>> import re 
>>> line = 'Smith, Nicole M Soc Sec#: xxx-xx-2222 56 Monroe Dr Smithville, NY 14226 25' 
>>> newline = re.sub("[A-Z]{2,2} [0-9]{5,5}", "", line) 
>>> print(newline) 
Smith, Nicole M Soc Sec#: xxx-xx-2222 56 Monroe Dr Smithville, 25 

、あなたは状態/郵便番号がこの行にない場合は、その後、何も交換しないと何も壊れていないので、あなたはそれを検索する必要はありませんされていることをさらなる利点を有します。

+0

私がfind()メソッドを使用する必要があるのは、そこに正確に何が入っているのかわからないテキストを調べる必要があるからです。私は特定のポイントを見つけることができれば、テキストを通してenumerate()を使ってソートし、私が望むものを出力できることを理解しました。唯一の問題は、私が上で説明したようなものである。上記のif文の中でどのように入れ子にすることができますか?私はそれがわかったら、これが非常に役に立つと思います。 –

0

リスト内の要素を検索するには、キーワードinを使用します。検索された要素がリストに存在する場合、それはTrueを返し、そうでない場合はFalseを返します。

Image1

+0

質問はfind()の使用についてです。あなたのコードはそうしていません。 – sisve

関連する問題