gpt4 book ai didi

python - 法语正则表达式

转载 作者:行者123 更新时间:2023-11-30 23:21:06 26 4
gpt4 key购买 nike

我有一个法语正则表达式,上面有重音符号。

我有一本打印字典(不是Pythonic数据结构):一个用大写字母书写的单词列表,后跟定义。我想按所有大写单词拆分我的 20Mo 字典。

当我有一个单词本身由多个单词组成时,问题就出现了:我需要按照大写字符的花色(带或不带空格)分割文本。此外,单词可以具有强调特征。

我花了一天的时间试图实现这一点,但找不到答案。

这是一个例子:

# -*- 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 ]

但我想保留标点符号,(也能够检测类型(我有“s.m.”等类型的列表)

我确信这非常简单,所以如果你能帮忙......谢谢,罗曼。

最佳答案

编辑:始终使用新的正则表达式模块,如果您想将文本拆分为(单词,类型,定义),您可以使用此模式:

# -*- 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

旧答案:

最简单的是使用new regex module而不是重新。该模块支持大写字母的字符类 \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

关于python - 法语正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com