2016-08-17 10 views
1

リスト内の特定の単語を検索するにはどうすればよいですか?その特定の単語を検索したら、そこから後方にどのように検索できますか?私の例では、都市を検索してから、逆方向に検索して通りのタイプを見つける必要があります(例:Rd、St、Aveなど)リスト内の単語を検索し、その単語から後方に検索するにはどうすればよいですか?

まず、ユーザーが123 FakevilleセントSWサンフランシスコCA 90215:アドレスが入力されると

searchWord = 'San Francisco' 
searchWord = searchWord.upper() 
address = raw_input("Type an address: ").upper() 

、私はその結果address = address.split()を使用して、それを分割:

['123', 'Fakeville', 'St', 'SW', 'San Francisco', 'CA', '90215']

私はその後番目に都市を検索Eリスト:

for items in address: 
    if searchWord in items: 
     print searchWord 

しかし、私は通りのタイプ(例:セント)を見つけるために、逆方向にカウントするかどうかはわかりません。

+2

許容される通りの種類を判断するために標準化を行っていますか?ユーザーがそれを省略した場合(一部の都市では一般的です)あなたの例では、「SW」が「St」に続く状況はどうですか? 'i = address.index(searchWord)'を使って任意のリスト要素のインデックスを取得し、スライス/配列表記法を使って後方( 'address [i-1]')で作業することができます。 – Dan

+1

また、リストをまったく使用せず、rfindに頼ってください。 – lynxlynxlynx

+4

あなたのサンプル文字列を分割すると、 'Francisco'から' San'を分解して、期待される出力が元のものにならないようにします。 – Jan

答えて

0

を使用して、リストをトラバース逆。

後方検索の方法はありません。list.rindex あなたは使用する必要があります。

rev_idx = len(my_list) - my_list[::-1].index(item) - 1 

私は本当にあなたの目的何を理解していない、私は後方の文字列のアドレスリストに「聖」の文字列を検索する方法を説明できること:

address = ['123', 'Fakeville', 'St', 'SW', 'San Francisco', 'CA', '90215'] 

town_idx = address.index('San Francisco') 
print(town_idx) 
# You'll get: 4 

before = address[:town_idx] 
st_index = len(before) - before[::-1].index("St") - 1 
print(st_index) 
# You'll get: 2 
0
for items in address: 
    if searchWord in items: 
     for each in reversed(address[0:address.index(searchWord)]): 
      if each == 'St': 
       print each 

あなたが街を見つけたらは、あなたがリスト内の項目のインデックスを検索するlist.indexメソッドを使用することができます逆に

関連する問題