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

Python中如何拆分韩语音节为单个基础谚文字符?

拆分韩语音节为单个音素

要把韩语音节拆分成对应的辅音、元音和收音,不能直接用[*syllable](单个韩语音节是独立Unicode字符,拆分会返回自身),得利用韩语字符的编码规则解析:

解决方案代码

# 定义韩语初声(辅音)、中声(元音)、终声(收音)列表
initial_consonants = ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ']
vowels = ['ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ']
final_consonants = ['', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ']

def split_hangul_syllable(syllable):
    # 检查输入是否为单个韩语音节
    if len(syllable) != 1 or not ('가' <= syllable <= '힣'):
        return [syllable]
    
    # 计算字符编码偏移量
    code_offset = ord(syllable) - ord('가')
    # 拆分各音素的索引
    initial_idx = code_offset // (21 * 28)
    vowel_idx = (code_offset % (21 * 28)) // 28
    final_idx = code_offset % 28
    
    # 组装结果列表
    parts = [initial_consonants[initial_idx], vowels[vowel_idx]]
    if final_consonants[final_idx]:
        parts.append(final_consonants[final_idx])
    return parts

# 测试示例
example = '만들다'
print(split_hangul_syllable(example[-2]))  # 输出: ['ㄷ', 'ㅡ', 'ㄹ']

原理说明

韩语音节(如들)在Unicode中是单个复合字符,范围为U+AC00(가)到U+D7AF(힣),每个音节由**初声(辅音)、中声(元音)、终声(收音,可选)**组成:

  1. 用字符编码减去가的编码,得到偏移量
  2. 通过数学运算拆分出三个音素的索引
  3. 从预设的音素列表中取出对应字符,组装成结果

如果需要批量拆分整个字符串的所有音节,可再封装一个函数:

def split_hangul_string(s):
    result = []
    for char in s:
        result.extend(split_hangul_syllable(char))
    return result

print(split_hangul_string('만들다'))  # 输出: ['ㅁ', 'ㅏ', 'ㄴ', 'ㄷ', 'ㅡ', 'ㄹ', 'ㄷ', 'ㅏ']

内容的提问来源于stack exchange,提问作者Francisco García Barrada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:45:49