2

英語以外の文字、句読点などの特殊文字、または単語の先頭または途中の数字を含む単語を数える必要があります。私はそれをしようとしていますre、そして今それはのようです

begin_searcher = re.compile(r'[0-9]+[\w\-]')
middle_searcher = re.compile(r'[\w\-]+[0-9]+[\w\-]')
both_searcher = re.compile(r'[0-9]+[\w\-]+[0-9]+[\w\-]')

しかし、それは完全に間違って動作します。私のことをよく知っている人は、re助けてください。

私はこれを数える必要があります:

'asfas1254asffas'
'125safasffa'
'asd!asfg'
'asff#dasf'
'sex!!!!'
'safщовфау'

4

2 に答える 2

0

それが役立つ場合:

def find_alphabetic_words(self, text):
                    letters = ascii_letters
                    letters_nd_term = letters + "?!,."
                    return not any([set(text[:-1]).difference(letters),text[-1] not in letters_nd_term])
于 2012-12-04T19:53:51.023 に答える
0

「英語以外の」文字について言及したので、ストックの代わりに正規表現reを使用することをお勧めします。後者ではユニコードのサポートが弱いためです。私が質問を誤解しない限り、あなたは次のようなものを探しています:

regex.match(ur'^\p{L}*[\p{P}\p{Nd}]*\p{L}+$', s) #

ここsで、Unicodeオブジェクトであることが期待されます。これは一致u"123щовßß"u"щов456ßß"、拒否しu"щовßß!!!"ます。

于 2012-11-10T14:25:11.567 に答える