目前,我正在尝试从一个字符串创建一个新的列表,基于来自另一个列表的匹配值。例如,我的值列表是:
['IX', 'C', 'D', 'XL', 'I', 'XC', 'M', 'L', 'CD', 'X', 'IV', 'CM']都是罗马数字。我该如何处理一个罗马数字:
MMIX并将其拆分为:
['M', 'M', 'IX']基于前面的列表。
任何帮助都是最好的!
发布于 2013-04-10 12:18:32
我不确定这种方法是否能在一般情况下解析罗马数字。例如,这段代码无法正确解析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_farhttps://stackoverflow.com/questions/15916728
复制相似问题