Python 3.x 如何使用单词列表中的任意单词拆分字符串

Python 3.x 如何使用单词列表中的任意单词拆分字符串,python-3.x,Python 3.x,如何使用单词列表中的任意单词拆分字符串 我有一个字符串列表 l=['IV',IX',XL',XC',CD',CM'] 我需要根据以下列表拆分例如“XCVI” 'XC-V-I'这里有一个解决方案,但我不确定这是否是最好的方法: def split(s, l): tokens = [] i = 0 while i < len(s): if s[i:i+2] in l: tokens.append(s[i:i+2])

如何使用单词列表中的任意单词拆分字符串

我有一个字符串列表
l=['IV',IX',XL',XC',CD',CM']

我需要根据以下列表拆分例如“XCVI”
'XC-V-I'

这里有一个解决方案,但我不确定这是否是最好的方法:

def split(s, l):
    tokens = []
    i = 0
    while i < len(s):
        if s[i:i+2] in l:
            tokens.append(s[i:i+2])
            i += 2
        else:
            tokens.append(s[i])
            i += 1
    return '-'.join(tokens)

为什么
V
I
被解析为单独的字符?你不想根据两个相邻的字符进行分割吗?列表中的组合
XC
,但没有
VI
l = ['IV', 'IX', 'XL', 'XC', 'CD', 'CM']

>>> split('XCVI', l)
XC-V-I
>>> split('IXC', l)
IX-C
>>> split('IXXC', l)
IX-XC