用Unicode语言进行Python3字数计算

用Unicode语言进行Python3字数计算,python,python-3.x,unicode,python-unicode,word-count,Python,Python 3.x,Unicode,Python Unicode,Word Count,我有包含多种语言的文本。我想要一个单词计数,它只记录使用Python3的希腊unicode字符集出现的单词。比如: wordCount = 0 theText = open(file.txt, 'r') for word in theText.split(): if GreekUnicodeCheck(word): wordCount += 1 print(wordCount) 我考虑过检查每个单词中是否都有希腊字母,如: wordCount = 0 theText =

我有包含多种语言的文本。我想要一个单词计数,它只记录使用Python3的希腊unicode字符集出现的单词。比如:

wordCount = 0
theText = open(file.txt, 'r')
for word in theText.split():
    if GreekUnicodeCheck(word):
        wordCount += 1
print(wordCount)
我考虑过检查每个单词中是否都有希腊字母,如:

wordCount = 0
theText = open(file.txt, 'r')
greekChars = ['α', 'β', 'γ', 'δ', 'ε', ...]
for word in theText.split():
    if any(letter in word for letter in greekChars):
        wordCount += 1
print(wordCount)

我认为这应该行得通,但是当你考虑到所有的大小写、变音符号等组合时,字符集变得相当大(我正在处理古典希腊语)。有更优雅的解决方案吗?

不过没有那么多。看一看。这里列出了所有希腊字母,我使用python脚本将其转换为以下列表:

greekSymbols = [\u0394, \u03A9, \u03C0, \u03F4, \u03BB, \u03B8, \u03B1, \u0302, \u0302, \u0302, \u0302, \u03B1, \u03B2, \u03B3, \u03B4, \u03B5, \u03B6, \u03B7, \u03B8, \u03B9, \u03BA, \u03BB, \u03BC, \u03BD, \u03BE, \u03BF, \u03C0, \u03C1, \u03C2, \u03C3, \u03C4, \u03C5, \u03C6, \u03C7, \u03C8, \u03C9, \u0391, \u0392, \u0393, \u0394, \u0395, \u0396, \u0397, \u0398, \u0399, \u039A, \u039B, \u039C, \u039D, \u039E, \u039F, \u03A0, \u03A1, \u03A3, \u03A4, \u03A5, \u03A6, \u03A7, \u03A8, \u03A9, \u03F4]

仅使用Python标准库获取所有可能的希腊字符列表的一种简单方法是使用该库按字符名进行搜索

import unicodedata
greekChars = [chr(i) for i in range(0x110000) if 'GREEK' in unicodedata.name(chr(i), '')]

指向可与“pip安装字母检测器”一起安装的字母检测器。探测器代码为。它可用于检测希腊unicode字符和其他语言。对于希腊文ad=AlphabetDetector(),然后使用ad.is_希腊文(word)谢谢Darryl,这是一个很好的线索。我要试试看!您可以转换为分解的Unicode标准格式(使用
unicodedata.normalize
)。这会将双字母与其基本字母分开。然后你可以只检查基本字母。太棒了。这就是我需要的答案。谢谢你,Lenz。变量和函数名应该跟在带有下划线的
小写字母后面。谢谢。这很有帮助。这也许就足够了。区别在于这是一个现代希腊字符集。古希腊语的问题在于重音、呼吸标记和其他一些可能的标记,这些标记大多出现在元音上。在任何一个合适的字母上,这些标记的可能排列都会快速增长。非常好,谢谢。这是我一直在寻找的一大部分。