私は、次の文字列があります。ローマ数字を含む文字列は、同等の整数に変換し
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
@Makoto:はい。数値が抽出される順番が関係するからです。 '1000'は' M'でなければなりません - あなたが辞書を使った場合に得られる 'DD'や' CCCCCCCCCC'はできません。少なくとも10進数からローマ数字への変換では、数字の固定された順序が必要です。 –