1

私はフランス語の正規表現を持っていますが、アクセントがあります。

私は印刷された辞書を持っています(pythonicデータ構造ではありません):大文字で書かれた単語のリストとそれに続く定義。20Mo 辞書をすべて大文字の単語で分割したいと考えています。

問題は、単語自体がさまざまな単語で構成されている場合に発生します。空白の有無にかかわらず、大文字のスーツに続いてテキストを分割する必要があります。さらに、単語は強調された文字を持つことができます。

私はそれを実現しようと1日を費やしましたが、答えを見つけることができませんでした.

例を次に示します。

# -*- coding: utf-8 -*-
import codecs
import re
import string
print "debut pgm"
import regex



dico = """ARRHEMENT. s. m. L'action d'arrher. Achat de grains en vert et sur pied. ARRHER.v. a. S'assurer de quelque chose en donnant des arrhes. Arrher des marchandises.
Arrhé, ée. participe. ARRHES. s. f. pl. L'argent qu'on donne pour assurance de l'exécution d'un marché, et que l'on perd si lemarché n'a pas lieu par la faute de celui qui les a données. Le marché est−il conclu? donnez des arrhes. Il s'est engagé, il a pris des arrhes. Donner des arrhes au coche. •On dit familièrement, qu'On a donné des arrhes au coche, pour faire entendre qu'On s'est engagé dans quelque affaire, dans quelque société. Je ne puis
A 201"""

pattern = r'(?u)\p{Lu}+(?: \p{Lu}+)*|\p{Ll}+'

matches = regex.findall(pattern, dico)

n =0
i = 0

definition  = ""
mot         = ''
while i < len(matches):

    if matches[i].isupper() and len(matches[i])>1:
        print definition
        definition =""
        word         = matches[i]
        print "[",word,"]"
    else:
        definition  += matches[i] + " "

    i = i + 1

結果はデビューpgmを与える

[ ARRHEMENT ]
s m L action d arrher A chat de grains en vert et sur pied 
[ ARRHER ]
v a S assurer de quelque chose en donnant des arrhes A rrher des marchandises A rrh ? ? e participe 
[ ARRHES ]

しかし、句読点を保持したいと思います(また、タイプを検出できるようにします(「sm」のようなタイプのリストがあります)

私はそれが狂ったように単純だと確信しているので、助けていただければ... ありがとう、romain。

4

1 に答える 1

3

編集: 常に新しい正規表現モジュールを使用します。テキストを (単語、タイプ、定義) に分割する場合は、次のパターンを使用できます。

# -*- coding: utf-8 -*-
import regex

data = u'''ARRHEMENT. s. m. L'action d'arrher. Achat de grains en vert et sur pied. ARRHER.v. a. S'assurer de quelque chose en donnant des arrhes. Arrher des marchandises. Arrhé, ée. participe. ARRHES. s. f. pl. L'argent qu'on donne pour assurance de l'exécution d'un marché, et que l'on perd si le marché n'a pas lieu par la faute de celui qui les a données. Le marché est−il conclu? donnez des arrhes. Il s'est engagé, il a pris des arrhes. Donner des arrhes au coche. •On dit'''

pattern = r'''(?usx)
    (?<word> \b \p{Lu}+ (?> [ ] \p{Lu}+ )* )
    \. [ ]?
    (?<type> [a-z]{1,3} \. (?> [a-z]{1,3} \. )*)
    [ ]
    (?<def> .*? ) (?=(?1)\.|$)'''

matches = regex.findall(pattern, data)

print matches

古い答え:

最も簡単なのは、re の代わりに新しい正規表現モジュールを使用することです。\p{Lu}このモジュールは、大文字、小文字の文字クラスをサポートしています\p{Ll}。Unicode フラグ(?u)もサポートしています(この修飾子のスコープはグローバルであり、代替の各部分に配置する必要はありません)。例:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import regex

data = u'ARMÉ tu ARMÉE det PROPRÉTEUR def ÉTERNUER def À LA MALEHEURE test'


pattern = r'(?u)\p{Lu}+(?: \p{Lu}+)*|\p{Ll}+'

matches = regex.findall(pattern, data)

print matches
于 2014-08-02T19:36:45.077 に答える