python 列表中无法识别三个特殊的丹麦语元音 æ、ø 和 å

The three special Danish vowels æ, ø and å are not recognized in python list

我正在编写一个程序,旨在帮助儿童和阅读障碍者将单词分成音节。 对于执行此操作的软件,它需要计算给定单词中的所有元音。

我已经编写了代码,如果它们不包含特殊元音,它可以正确划分任何单词。 但是,如果我使用带有丹麦语元音的单词,它不会计算特殊元音,因此该单词不会拆分为正确的音节。

这是我的代码:

#!/usr/bin/env python
-*- coding: utf-8 -*-

import sys

wordGiven = str(sys.argv[1])

vowelsArray = ["a", "e", "i", "o", "u", "y", "æ", "ø", "å"]

vowelsFoundInWord = 0;

counter = 0
for char in wordGiven:
    if char in vowelsArray:
        vowelsFoundInWord += 1
    counter += 1

print vowelsFoundInWord

如果我用 "slået" 这个词输入脚本,它只会打印 1。我该怎么办? 我已经尝试在列表和循环中写入 ord("å"),但随后出现错误:ord() "expected a character, but string of length 2 found".

我应该怎么做才能让它发挥作用?

您使用的是 UTF-8 编码数据,但假设所有字母都只编码为一个字节。当您迭代 wordGiven 时,您迭代的是 字节 ,而不是字符。

您的假设不正确; ASCII 字符集之外的任何内容都需要 2 个或更多字节才能以 UTF-8 编码。对于 å,这意味着您将获得两个字节:

>>> "å"
'\xc3\xa5'

\xc3\xa5 都没有出现在您的元音列表中。

假设您的输入也是 UTF-8 编码的,您需要将其解码为 Unicode,使用 Unicode 元音,并用它来测试:

wordGiven = unicode(sys.argv[1], 'utf8')

vowelsArray = [u"a", u"e", u"i", u"o", u"u", u"y", u"æ", u"ø", u"å"]

您可能想研究 字节 字符 之间的区别,尤其是在编解码器、Unicode 和 Python。我推荐你阅读: