gpt4 book ai didi

python - 在 Python 中标记非英语文本

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:55 24 4
gpt4 key购买 nike

我有一个波斯语文本文件,其中包含如下几行:

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

我想从这一行生成一个单词列表。对我来说,单词边界是数字,如上一行中的 6、7 等,还有 Ì 字符。所以列表应该是:

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

我想在 Python 3.3 中执行此操作。执行此操作的最佳方法是什么,我非常感谢对此提供的任何帮助。

编辑:

我得到了很多答案,但是当我将它们用于另一个测试用例时,它们不起作用。测试用例是这样的:

منهدم کردن : 1 خراب کردن، ویران کردن، تخریب کردن 2 نابود کردن، از بین بردن 

我希望有这样一个标记列表:

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

最佳答案

使用 regex package :

>>> import regex
>>> text = 'ذوب 6 خوی 7 بزاق ،آب‌دهان ، یم 10 زهاب، 11 آبرو، حیثیت، شرف'
>>> regex.findall(r'\p{L}+', text.replace('\u200c', ''))
['ذوب', 'خوی', 'بزاق', 'آبدهان', 'یم', 'زهاب', 'آبرو', 'حیثیت', 'شرف']
  • 文本包含零宽度非连接 (U+200C)。使用 str.replace 删除了字符。
  • \p{L}\p{Letter} 匹配来自任何语言的任何类型的字母。

参见 Regex Tutorial - Unicode Characters and Properties .

更新

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

>>> regex.findall(r'[\p{Cf}\p{L}]+', text)
['ذوب', 'خوی', 'بزاق', 'آب\u200cدهان', 'یم', 'زهاب', 'آبرو', 'حیثیت', 'شرف']

看起来和你想要的不一样,但它们是一样的:

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

关于python - 在 Python 中标记非英语文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21011638/

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