使用 python 使用正则表达式提取一些 arabic/persian (unicode) 单词
extract some arabic/persian (unicode) words with regex using python
我需要使用 python re
库提取 Arabic/Persian 中的一些特定名称(类似于英语中的专有名词)。
示例(“شرکت”这个词的意思是“公司”,我们想提取公司名称):
input: شرکت تست گستران خلیج فارس
output: تست گستران خلیج فارس
我看过 [this answer] 并且在该示例中将“university”替换为“شرکت”会很好,但我不明白如何通过正则表达式和阿拉伯语 Unicode 查找关键字,如果它不是可以这样使用:
re.match("شرکت", "\u0634\u0631\u06A9\u062A") # returns None
Python 2 不会默认解析 unicode 文字(例如粘贴 unicode 字母时,或在代码中包含 \u
)。你必须明确说明:
re.match(u"شرکت", u"\u0634\u0631\u06A9\u062A")
否则,阿拉伯语将被翻译成实际的字节,这与 unicode 代码点不同,并且右侧的 Unicode 字符串将具有文字反斜杠,因为 Python 2 无法识别 \u
默认为有效转义。
另一种选择是从未来导入 - 在 Python 3 中,所有内容最初都被解析为 unicode,这使得 u"..."
有点过时:
from __future__ import unicode_literals
将使 unicode 文字在没有 u""
.
的情况下被正确解析
我需要使用 python re
库提取 Arabic/Persian 中的一些特定名称(类似于英语中的专有名词)。
示例(“شرکت”这个词的意思是“公司”,我们想提取公司名称):
input: شرکت تست گستران خلیج فارس
output: تست گستران خلیج فارس
我看过 [this answer] 并且在该示例中将“university”替换为“شرکت”会很好,但我不明白如何通过正则表达式和阿拉伯语 Unicode 查找关键字,如果它不是可以这样使用:
re.match("شرکت", "\u0634\u0631\u06A9\u062A") # returns None
Python 2 不会默认解析 unicode 文字(例如粘贴 unicode 字母时,或在代码中包含 \u
)。你必须明确说明:
re.match(u"شرکت", u"\u0634\u0631\u06A9\u062A")
否则,阿拉伯语将被翻译成实际的字节,这与 unicode 代码点不同,并且右侧的 Unicode 字符串将具有文字反斜杠,因为 Python 2 无法识别 \u
默认为有效转义。
另一种选择是从未来导入 - 在 Python 3 中,所有内容最初都被解析为 unicode,这使得 u"..."
有点过时:
from __future__ import unicode_literals
将使 unicode 文字在没有 u""
.