2013-04-10 85 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

相關問題