You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ISO语言代码在Python中获取对应语言的Unicode字符及替代方案

获取ISO语言代码对应的Unicode字符

直接通过ISO语言代码(比如de)获取对应语言的所有Unicode字符其实没有直接的API,因为Unicode的分类逻辑是基于**脚本(Script)**而非自然语言——比如德语用Latin脚本,但Latin脚本同时被英语、法语、西班牙语等数十种语言共享;反过来,有些语言可能使用多种脚本(比如日语同时用汉字、平假名、片假名)。不过我们可以通过两步间接实现你的需求:先从ISO语言代码映射到对应的脚本,再获取该脚本下的所有Unicode字符。

第一步:从ISO语言代码获取对应的脚本名称

我们可以用pycountry库来实现语言代码到脚本的映射,这个库维护了标准的ISO语言和脚本数据。

首先安装依赖:

pip install pycountry

然后用以下代码获取脚本名称:

import pycountry

def lang_code_to_script(lang_code):
    try:
        # 通过ISO 639-2的二位码获取语言对象
        language = pycountry.languages.get(alpha_2=lang_code)
        # 提取脚本名称(比如德语对应的是Latin)
        return language.script.name if hasattr(language, 'script') else None
    except LookupError:
        # 如果语言代码无效,返回None
        return None

# 测试德语代码de
print(lang_code_to_script('de'))  # 输出: Latin

如果你的需求需要支持更多边缘语言,也可以考虑langcodes库,它的语言-脚本映射更全面,用法类似。

第二步:通过脚本名称获取所有Unicode字符

拿到脚本名称后,我们可以遍历所有Unicode码点,用unicodedata模块判断每个字符所属的脚本,筛选出目标脚本的字符。

注意:unicodedata.script()返回的是脚本的缩写代码(比如Latin对应Latn),所以我们需要先建立缩写和全称的映射,确保匹配准确:

import unicodedata
import sys

# 脚本缩写到全称的映射(可以根据需求扩展)
SCRIPT_CODE_MAP = {
    'Latn': 'Latin',
    'Cyrl': 'Cyrillic',
    'Grek': 'Greek',
    'Hans': 'Simplified Chinese',
    'Hant': 'Traditional Chinese',
    'Kana': 'Katakana',
    'Hira': 'Hiragana'
}

def get_chars_for_script(script_name):
    target_script = script_name.lower()
    script_chars = []
    
    # 遍历所有Unicode码点(sys.maxunicode包含了所有Unicode字符)
    for codepoint in range(sys.maxunicode + 1):
        char = chr(codepoint)
        try:
            # 获取字符的脚本缩写
            script_code = unicodedata.script(char)
            # 转成全称,若不在映射表则直接用缩写
            script_full_name = SCRIPT_CODE_MAP.get(script_code, script_code).lower()
            
            if script_full_name == target_script:
                script_chars.append(char)
        except ValueError:
            # 部分控制字符或特殊字符没有脚本信息,直接跳过
            continue
    
    return script_chars

# 测试获取Latin脚本的所有字符
latin_chars = get_chars_for_script('Latin')
# 打印前10个字符看看
print(latin_chars[:10])  # 输出: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']

补充说明

  • 这种方法会返回该脚本的全部Unicode字符,比如Latin脚本包含德语的ß、法语的é、西班牙语的ñ等,如果你需要筛选出某语言特有的字符,还需要额外的规则(比如结合语言的字符集标准)。
  • 有些字符可能属于多个脚本,或者没有明确的脚本归属,这类字符会被跳过。

内容的提问来源于stack exchange,提问作者Gokul NC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:52:35