我有以下字符串:轉換包含羅馬數字的字符串到整數相當於
str = "MMX Lions Television Inc"
我需要把它轉換成:
conv_str = "2010 Lions Television Inc"
我有以下功能轉換羅馬數字轉換成其等於整數:
numeral_map = zip(
(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1),
('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I')
)
def roman_to_int(n):
n = unicode(n).upper()
i = result = 0
for integer, numeral in numeral_map:
while n[i:i + len(numeral)] == numeral:
result += integer
i += len(numeral)
return result
我該如何使用re.sub
來做在這裏得到正確的字符串?
(注:我試着用這裏所描述的regex
:How do you match only valid roman numerals with a regular expression?但它不工作)
有沒有你不使用直線上升的字典牽着你的羅馬數字,然後使用鍵來獲取值的原因嗎? – Makoto 2012-04-10 17:38:15
@Makoto:是的,因爲提取數字的順序是相關的。 '1000'必須是'M' - 它不能是'DD'或'CCCCCCCCCC',如果你使用字典,你會得到它。至少從十進制到羅馬數字的轉換,您需要固定的數字順序。 – 2012-04-10 17:45:57