2013-07-28 1 views
1

다음과 같이 나는 단어의 목록을 가지고 :는 특정 문자와 닫는 단어를 식별

apple 
grapes 
pappu 
pop 
seeds 

내가 확인하고 문자 up로 끝나는 모든 단어를 표시합니다. 예상 출력은 다음과 같다 : 잘못된

pappu 
pop 

내 코드 :

p = [w for w in theWord if re.search('(u|p)$', w)] 
print p 
+0

정규 표현식을 사용해야합니다. 'theWord'는 실제로 어떻게 생겼습니까? – Blender

+0

파일에서 읽었을 가능성이 높으며'\ n'으로 끝납니다. –

+0

@limelights regex는 자동으로 개행을 무시합니다. –

답변

4

사용 str.endswithregex 여기에 필요하지 않습니다.

p = [w for w in theWord if w.endswith(('p','u'))] 

데모 :

>>> p = [w for w in theWord if re.search('(u|p)$', w)] 
>>> for w in p: 
...  print w 
...  
pappu 
pop 
1

는이 작업을 수행 할 수 있습니다 :

>>> theWord = ['apple', 'grapes', 'pappu', 'pop', 'seeds'] 
>>> p = [w for w in theWord if w.endswith(('p','u'))] 
for w in p: 
    print w 
...  
pappu 
pop 

은 BTW 코드가 좋아, 당신은 단지가 루프 예상되는 출력을 얻을 필요가

words = ['apple','grapes','pappu','pop','seeds',''] 

for word in words: 
    if word[-1:] == 'p' or word[-1:]== 'u': 
     print word 

각 단어의 마지막 문자를 색인하고 if 그들은 다음 staement 일치 그들과 함께

+0

목록에 빈 문자열이 있으면 어떻게됩니까? –

+0

해결되었지만 솔루션이 더 좋고 짧을 것입니다. – Serial

+0

그냥 단어가 충분하면 조각을 사용하는 것이 더 좋습니다. 단어 [-1 :] == 'p' ' –

0

당신은 항상 슬라이스를 사용할 수는, 인덱싱 역 무엇이든 할 :

>>> theWord = ['apple', 'grapes', 'pappu', 'pop', 'seeds'] 
>>> [w for w in theWord if w[-1].lower() in ['p', 'u']] 
['pappu', 'pop'] 
>>> 

N.B.을 .lower()은 P와 U로 끝나는 단어를 얻고 자 할 때만 필요합니다.

+0

http://stackoverflow.com/questions/17905563/identify-words-closing-with-the-a-particular-character/17905567#comment26155172_17905584 –

관련 문제