2016-04-10 6 views
0

私はpythonを使って道路、通り、ハイウェイの名前を抽出するコードを書いています。例えば、 "Uhuru Highwayに沿って事故があります。私のコードが上記のハイウェイの名前を抽出できるようにしたい、私は以下のコードを書いた。Pythonの正規表現を使用して文の中で位置の言葉を抽出する

sentence="there is an accident along uhuru highway" 
listw=[word for word in sentence.lower().split()] 
for i in range(len(listw)): 
    if listw[i] == "highway": 
     print listw[i-1] + " "+ listw[i] 

私はこれを達成することができますが、私のコードが最適化されていない、私は

答えて

0

'ウフルの高速道路は、' あなたはトンを行うことができます見つけることができます彼は正規表現を使用せずに従う:

sentence.split("highway")[0].strip().split(' ')[-1] 

"ハイウェイ"に従って最初に分割します。

['there is an accident along uhuru', ''] 

これで、最初の部分から最後の単語を簡単に抽出することができます。

+0

大丈夫です。これは動作します。今私は場所の表示も持っている単語のリストを持っています。例えば、文章は道路、rd、hwy、ハイウェイ、av、道、st、通りを有することができる。どのように正規表現のオプションとしてこのリストを置くのですか – leboMagma

+0

sthは次のように使います: 'r '\ S +(road | rd | hwy | hiway | av | avenue | st | street)' ' – schwobaseggl

+0

ありがとう。私が探していたもの – leboMagma

0

あなたは常にそれの後に高速道路があります抽出したい場所は、あなたが使用することができますしてください場合は、正規表現を使用して、任意の助けを考えています:

import re 

m = re.search(r'\S+ highway', sentence) # non-white-space followed by ' highway' 
print(m.group()) 
# 'uhuru highway' 
+0

大丈夫です。これは動作します。今私は場所の表示も持っている単語のリストを持っています。例えば、文章は道路、rd、hwy、ハイウェイ、av、道、st、通りを有することができる。このリストを正規表現 – leboMagma

+0

're.search(r '。*([\ w \ s \ d \ - \ _] +)。*'、文)' @leboMagma The 'のオプションとしてどのように置くのですか? * 'は高速道路、道路、ドライブ、通り、村などの後に何かにマッチしますが、一致がほとんどない場合は@schwobaseggiメソッドを好むでしょう – Tushortz

+0

ありがとうございます。私のオプションは、私が@schwobaseggiからの解決策を使用することを示唆している限り限定されています – leboMagma

0

を次のように

>>> sentence = "there is an accident along uhuru highway" 

>>> a = re.search(r'.* ([\w\s\d\-\_]+) highway', sentence) 
>>> print(a.group(1)) 

>>> uhuru 
関連する問題