繁体   English   中英

有没有办法知道Unicode字符串是否包含Python中的任何中文/日文字符?

[英]Is there a way to know whether a Unicode string contains any Chinese/Japanese character in Python?

我在Python中有一个Unicode字符串。 我正在寻找一种方法来确定字符串中是否有任何中文/日文字符。 如果可能的话,能够找到这些角色会更好。

这似乎与语言检测问题有点不同。 我的字符串可以是英文和中文文本的混合。

我的代码可以访问Internet。

您可以使用Unicode Script属性来确定它们通常与哪些脚本相关联。

遗憾的是,Python的unicodedata模块没有这个属性。 但是,许多第三方模块(如unicodedata2unicodescript都具有此信息。 您可以查询它们并检查Han脚本中是否有任何字符,对应于中文(和汉字和汉字)。

我在他的回答中尝试了nneonneo提到的Python的unicodedata模块,我认为它可能有效。

>>> import unicodedata
>>> unicodedata.name('你')
'CJK UNIFIED IDEOGRAPH-4F60'
>>> unicodedata.name('桜')
'CJK UNIFIED IDEOGRAPH-685C'
>>> unicodedata.name('あ')
'HIRAGANA LETTER A'
>>> unicodedata.name('ア')
'KATAKANA LETTER A'
>>> unicodedata.name('a')
'LATIN SMALL LETTER A'

如您所见,汉字和日文采用的汉字都被归类为CJK UNIFIED IDEOGRAPH并且平假名和片假名被正确识别。 我没有测试韩文字符,但我认为它们也应该属于CJK UNIFIED IDEOGRAPH

另外,如果你只关心它是否是一个CJK字符/字母,它似乎更简单:

>>> import unicodedata
>>> unicodedata.category('你')
'Lo'
>>> unicodedata.category('桜')
'Lo'
>>> unicodedata.category('あ')
'Lo'
>>> unicodedata.category('ア')
'Lo'
>>> unicodedata.category('a')
'Ll'
>>> unicodedata.category('A')
'Lu'

根据这里Ll是小写, Lu是大写, Lo是其他。

您可以使用此正则表达式[\⺀-\鿿]来匹配CJK字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM