python中非怎么表示_Python中非英语文本的标记化

>>> import regex

>>> text = 'ذوب 6 خوی 7 بزاق ،آب‌دهان ، یم 10 زهاب، 11 آبرو، حیثیت، شرف'

>>> regex.findall(r'\p{L}+', text.replace('\u200c', ''))

['ذوب', 'خوی', 'بزاق', 'آبدهان', 'یم', 'زهاب', 'آبرو', 'حیثیت', 'شرف']文本包含零宽度非连接符(U+200C)。使用str.replace删除了字符。在

\p{L}或{}匹配来自任何语言的任何种类的字母。在

更新

要同时包含U+200C,请使用[\p{Cf}\p{L}]+代替(\p{Cf}或{}匹配不可见的格式字符):

^{pr2}$

它看起来和你想要的不同,但它们是平等的:>>> got = regex.findall(r'[\p{Cf}\p{L}]+', text)

>>> want = [ 'ذوب','خوی','بزاق','آب‌دهان','یم','زهاب','آبرو','حیثیت' ,'شرف']

>>> print(want)

['ذوب', 'خوی', 'بزاق', 'آب\u200cدهان', 'یم', 'زهاب', 'آبرو', 'حیثیت', 'شرف']

>>> got == want

>>> got[:3]

['ذوب', 'خوی', 'بزاق']

>>> got[4:]

['یم', 'زهاب', 'آبرو', 'حیثیت', 'شرف']

更新2

编辑后的问题中有些单词包含空格。在>>> ' ' in 'منهدم کردن'

True

我在下面的代码中添加了\s来匹配空格,然后从匹配的字符串中去掉前导空格和尾随空格,然后过滤出空字符串。在>>> text = 'منهدم کردن : 1 خراب کردن، ویران کردن، تخریب کردن 2 نابود کردن، از بین بردن'

>>> want = ['منهدم کردن','خراب کردن', 'ویران کردن', 'تخریب کردن','نابود کردن', 'از بین بردن']

>>> [x for x in map(str.strip, regex.findall(r'[\p{Cf}\p{L}\s]+', text)) if x] == want

True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值