5

任意の言語で 1 つの単語を含むすべての文字列を一致させようとしていました。検索の結果、python の Re モジュールにはなかった \p{...} にたどり着きました。しかし、https://pypi.python.org/pypi/regexを見つけました。\p{...} コマンドで動作するはずです。そうではありませんが。

私はそれらの行を解析しようとしました:

7652167371  apéritif
78687   attaché
78687   époque
78678   kunngjøre
78678   ærbødig
7687    vår
12312   dfsdf
23123   322432
1321    23123
2312    привер
32211   оипвыола

と:

def Pattern_compile(pattern_array):
    regexes = [regex.compile(p) for p in pattern_array]
    return regexes

def main():
    for line in sys.stdin:
        for regexp in Pattern_compile(p_a):
            if regexp.search (line):
                print line.strip('\n')

if __name__ == '__main__':
    p_a = ['^\d+\t(\p{L}|\p{M})+$', ]
    main()

結果はラテン文字の単語のみです。

12312   dfsdf
4

1 に答える 1

3

ユニコードを渡す必要があります。(正規表現と文字列の両方)

import sys

import regex


def main(patterns):
    patterns = [regex.compile(p) for p in patterns]
    for line in sys.stdin:
        line = line.decode('utf8')
        for regexp in patterns:
            if regexp.search (line):
                print line.strip('\n')

if __name__ == '__main__':
    main([ur'^\d+\t(\p{L}|\p{M})+$', ])
于 2013-07-11T14:41:40.900 に答える