나는 다음과 같은 문자열이 있습니다로마 숫자를 포함하는 문자열은 해당 정수로 변환
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'가 될 수 없습니다. 적어도 십진법에서 로마식 숫자로의 변환에 대해서는 숫자의 고정 된 순서가 필요합니다. –