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

如何在Python中拆分连写英文单词并添加下划线?

拆分连写英文单词为下划线分隔格式的可行方法

方法一:正则表达式匹配词边界

针对这类常见单词拼接的字符串,可以通过正则匹配单词间的边界规律来拆分,比如短单词前缀/后缀、辅音-元音分界等:

import re

arr_list = ['startedat', 'duecheck', 'vehicleid']
# 针对示例定制匹配规则,可根据需求扩展单词组
pattern = re.compile(r'(started|due|vehicle)(at|check|id)')
for word in arr_list:
    match = pattern.match(word)
    if match:
        print('_'.join(match.groups()))

如果需要适配更多场景,可使用通用的辅音-元音匹配模式:

import re

def split_concat_word(word):
    # 匹配辅音结尾+元音开头的位置,拆分后转小写拼接
    split_parts = re.findall(r'[bcdfghjklmnpqrstvwxz]+[aeiouy]*|[aeiouy]+', word, re.I)
    return '_'.join([part.lower() for part in split_parts])

arr_list = ['startedat', 'duecheck', 'vehicleid']
for word in arr_list:
    print(split_concat_word(word))

方法二:使用spaCy预训练分词模型

spaCy的分词器依赖预训练语言模型,对连续单词的拆分效果比word_tokenize更精准:

import spacy

# 加载英文轻量模型
nlp = spacy.load("en_core_web_sm")
arr_list = ['startedat', 'duecheck', 'vehicleid']

for word in arr_list:
    doc = nlp(word)
    split_parts = [token.text for token in doc]
    print('_'.join(split_parts).lower())

如果遇到专业术语拆分失败,可自定义添加词汇到spaCy的词汇表中。

方法三:字典贪心匹配拆分

基于英文单词字典,从左到右贪心匹配最长有效单词,完成拆分:

from nltk.corpus import words
word_set = set(words.words())

def greedy_split(word):
    word_lower = word.lower()
    n = len(word_lower)
    dp = [False] * (n + 1)
    dp[0] = True
    split_indices = [0] * (n + 1)

    for i in range(1, n+1):
        for j in range(i):
            if dp[j] and word_lower[j:i] in word_set:
                dp[i] = True
                split_indices[i] = j

    if not dp[n]:
        return word
    parts = []
    i = n
    while i > 0:
        j = split_indices[i]
        parts.append(word_lower[j:i])
        i = j
    return '_'.join(reversed(parts))

arr_list = ['startedat', 'duecheck', 'vehicleid']
for word in arr_list:
    print(greedy_split(word))

这种方法需要确保字典覆盖目标单词,针对专业词汇可补充自定义词典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:55:25