2013-04-10 103 views
0

此刻,我试图根据来自另一个列表的匹配值从字符串中创建一个新列表。例如,我的值列表是:将基于列表值的字符串拆分为Python中的列表

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

这些都是罗马数字。我怎么会去考虑罗马数字:

MMIX 

和分裂它:

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

基于前面的列表上。

任何帮助将是伟大的!

+2

你实际上是在试图转换数字吗?我不知道这是做这件事的最好方法。我认为它也含糊不清,因为你会如何解析“IXL”? – 2013-04-10 04:09:10

+0

您提出问题,然后说帮助会很好,但是您的实际问题是什么?你尝试了什么?它怎么没用? – 2013-04-10 04:10:05

+0

我不认为有什么办法可以解决当前的问题陈述......太多的减少/减少会导致模糊结果的错误 – 2013-04-10 04:10:52

回答

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 
+0

嗯谢谢你,这正是我以后的! – 2013-04-10 04:41:37

相关问题