2013-08-01 34 views
7

tôi có một tập hợp các từ như sau:Chuỗi so sánh trong lời trăn kết thúc với

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

Trong câu trên tôi cần phải xác định tất cả câu kết thúc với ? hoặc . hoặc 'gy'. và in từ cuối cùng.

cách tiếp cận của tôi là như sau:

# 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 

Kết quả tôi nhận được là:

Hey, how are you?

Tên tôi là Mathews.

Tôi ghét rau

khoai tây chiên ra sũng nước

Kết quả dự kiến ​​là:

bạn?

Mathews.

sũng nước

+0

Bạn đang tìm kiếm để in các câu hoặc các từ ở phần cuối của câu? –

+0

Chỉ những từ, không phải là câu –

+0

Nhân tiện, bạn không có một tập hợp các từ, bạn có một danh sách các chuỗi. – misha

Trả lời

8

Sử dụng endswith() phương pháp.

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

Output:

you? 
Mathews. 
soggy 
+3

Bạn không cần phải gọi 'strip()', bởi vì 'split()' không có dấu phân cách hàng đầu, dấu cách. – falsetru

+0

@falsetru: Đã sửa lỗi. Cảm ơn. :) –

5

Sử dụng endswith với một tuple.

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 

thường xuyên biểu hiện thay thế:

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

Bạn đang ở rất gần.

Bạn chỉ cần thoát khỏi ký tự đặc biệt (?.) trong mẫu:

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

More details in the documentation.

+0

BTWm 'r' là gì? –

+0

@sharonHwk, Các chuỗi có 'r' hàng đầu được gọi là chuỗi thô. Chuỗi thô thoát khỏi dấu gạch chéo ngược. – falsetru

+0

@sharonHwk Đó là một chuỗi thô. Tài liệu mở ra với [chi tiết hơn] (http://docs.python.org/2/library/re.html). –