0

目前我正在尝试根据来自另一个列表的匹配值从一个字符串创建一个新列表。例如,我的值列表是:

['IX', 'C', 'D', 'XL', 'I', 'XC', 'M', 'L', 'CD', 'X', 'IV', 'CM']

都是罗马数字。我将如何使用罗马数字:

MMIX

并将其拆分为:

['M', 'M', 'IX']

根据之前的列表。

任何帮助都会很棒!

4

1 回答 1

1

我不确定这种方法是否适用于解析罗马数字。例如,此代码无法正确解析VIII,但那是因为V不在令牌列表中。但这是一个简单的递归函数,它在输入字符串的开头查找一个标记并组装一个列表:

tokens = ['IX', 'C', 'D', 'XL', 'I', 'XC', 'M', 'L', 'CD', 'X', 'IV', 'CM']

def rn_split(numeral, results_so_far=[]):
    if len(numeral)==0:
        return results_so_far # Break the recursion
    for token in tokens:
        if numeral.startswith(token):
            results_so_far.append(token)
            recurse_numeral = numeral[ (len(token)): ]
            return rn_split(recurse_numeral, results_so_far)
    # Remainder of numeral didn't match.  Bail out
    results_so_far.append(numeral)
    return results_so_far
于 2013-04-10T04:18:31.957 回答