12

我有一组词如下:

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

在上面的句子中,我需要识别所有以?or.或 'gy' 结尾的句子。并打印最后一个字。

我的方法如下:

# 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

我得到的结果是:

嘿,你怎么样?

我的名字是马修斯。

我讨厌蔬菜

炸薯条湿透了

预期结果是:

你?

马修斯。

湿漉漉的

4

3 回答 3

13

使用endswith()方法。

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

输出:

you?
Mathews.
soggy
于 2013-08-01T04:46:05.413 回答
6

endwith与元组一起使用。

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

正则表达式替代:

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
于 2013-08-01T04:48:41.567 回答
3

你很亲密。

您只需要转义模式中的特殊字符(?.):

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

文档中的更多详细信息。

于 2013-08-01T05:06:57.517 回答