-2

たとえば、単語がアルファベットかどうかをチェックする関数を作成する必要があります

my_function('Hello!')
>> True
my_function('How')
>> True
my_function('F!@K')
>> False
my_function('</html>')
>> False

何も思いつきません。re私はlibが本当に悪いです。

begin_searcher = re.compile(r'[\w\-]')
end_searcher = re.compile(r'[\w\-]+[!-?]')

非標準のライブラリを使用できません

4

3 に答える 3

3

非正規表現ソリューション

from string import ascii_letters
def foo(st):
    letters = ascii_letters
    letters_nd_term = letters + "?!"
    return not any([set(st[:-1]).difference(letters),st[-1] not in letters_nd_term])
于 2012-11-10T19:09:09.420 に答える
2

あなたは「言葉」が何であるかを定義する上でより良い仕事をしなければなりません。もしも !と ?単語の終わりで大丈夫です、どうですか。および、および; や。。など?

これがトリックを行うかもしれない何かです:

>>> import re
>>> pat = re.compile('[a-zA-Z]+[.,!?]?')
>>> m = pat.match(word) #where word is what you're checking
>>> True if m else False

もちろん、これは引用符で囲まれた単語、単語の最後にある複数の句読点、またはすべての種類の句読点を考慮していません。しかし、それはあなたが「言葉」が何であるかを理解している間あなたに始めるのに良い場所を与えるはずです。

于 2012-11-10T19:04:39.360 に答える
0

これには、正規表現ではなくセットを使用するのが最適です。

>>> import string
>>> letters = set(string.ascii_letters)
>>> def is_alpha(word):
    return set(word).issubset(letters)

>>> for wrd in 'Hello! Hello How F!@K </html>'.split():
    print("is_alpha(%r) == %r" % (wrd, is_alpha(wrd)))


is_alpha('Hello!') == False
is_alpha('Hello') == True
is_alpha('How') == True
is_alpha('F!@K') == False
is_alpha('</html>') == False
>>> 
于 2012-11-10T20:34:15.373 に答える