2013-08-01 9 views
7

Mam zestaw słów następująco:porównanie String w Pythonie słów kończących się

['Hey, how are you?\n','My name is Mathews.\n','I hate vegetables\n','French fries came out soggy\n'] 

w powyższych zdaniach muszę zidentyfikować wszystkie zdania kończące ? lub . lub „Gy”. i wydrukuj ostatnie słowo.

Moje podejście jest następujące:

# words will contain the string i have pasted above. 
word = [w for w in words if re.search('(?|.|gy)$', w)] 
for i in word: 
    print i 

Wynik pojawia się:

Hej, jak się masz?

Nazywam się Mathews.

Nienawidzę warzyw

Frytki wyszedł rozgotowane

Oczekiwany wynik to:

ty?

Mathews.

rozmokłe

+0

Zapraszamy do wydrukowania zdania lub wyrazy na końcu zdania? –

+0

Tylko słowa, nie zdanie –

+0

Nawiasem mówiąc, nie masz zestawu słów, masz listę ciągów. – misha

Odpowiedz

8

Zastosowanie endswith() metodą.

>>> for line in testList: 
     for word in line.split(): 
      if word.endswith(('?', '.', 'gy')) : 
       print word 

wyjściowa:

you? 
Mathews. 
soggy 
+3

Nie trzeba wywoływać 'strip()', ponieważ 'split()' bez separatora przycina wiodące, końcowe spacje. – falsetru

+0

@falsetru: Naprawiono. Dzięki. :) –

5

Zastosowanie endswith z krotki.

lines = ['Hey, how are you?\n','My name is Mathews.\n','I hate vegetables\n','French fries came out soggy\n'] 
for line in lines: 
    for word in line.split(): 
     if word.endswith(('?', '.', 'gy')): 
      print word 

Regularne alternatywa wyrażenie:

import re 

lines = ['Hey, how are you?\n','My name is Mathews.\n','I hate vegetables\n','French fries came out soggy\n'] 
for line in lines: 
    for word in re.findall(r'\w+(?:\?|\.|gy\b)', line): 
     print word 
3

Byłaś blisko.

Wystarczy do ucieczki znaków specjalnych (? i .) we wzorcu:

re.search(r'(\?|\.|gy)$', w) 

More details in the documentation.

+0

BTWm co to jest 'r'? –

+0

@sharonHwk, Ciągi z wiodącym 'r' są nazywane nieprzetworzonymi ciągami. Surowe struny uciekają z powrotem. – falsetru

+0

@sharonHwk Jest to nieprzetworzony ciąg znaków. Dokumentacja otwiera się [więcej szczegółów] (http://docs.python.org/2/library/re.html). –

Powiązane problemy