我在python中创建一个简单的罗马数字转换器并使用它:
num_values = [(1000000, 'M'+ u'\u0304'),
(900000, 'CM'+ u'\u0304'),
(100000, 'C'+ u'\u0304'),
(90000, 'XC'+ u'\u0304'),
(50000, 'L'+ u'\u0304'),
(40000, 'XL'+ u'\u0304'),
(10000, 'X'+ u'\u0304'),
(5000, 'V'+ u'\u0304'),
(1000, 'M'),
(900, 'CM'),
(500, 'D'),
(400, 'CD'),
(100, 'C'),
(90, 'XC'),
(50, 'L'),
(40, 'XL'),
(10, 'X'),
(9, 'IX'),
(5, 'V'),
(4, 'IV'),
(1, 'I')]
表示我的函数迭代的值。但是,unicode似乎只影响字符串中的第一个字符。 (例如,'CM'+ u'\u0304'
看起来像CM̄而不是C̄M̄。)
有没有办法纠正这个问题,同时将所有内容保存在一个索引中?
答案 0 :(得分:0)
组合宏(U + 0304)与前面的代码点(仅)相结合。如果你想要两个带有过量栏的字符,你将需要两个组合宏。之一:
'C\u0304M\u0304'
或
'C' + '\u0304' + M + '\u0304'
如果您使用的是Python 2(不要),则需要u'\u0304'
或u'C\u0304M\u0304'
您可能对Unicode已
这一事实感兴趣 (100_000, u'\u2188'), # ↈ
(50_000, u'\u2187'), # ↇ
(10_000, u'\u2182'), # ↂ
不幸的是,1_000_000没有什么,我也不知道它们的历史(它可能取决于你在何时何地谈论)。还有你' \ u3080' (ↀ)作为替代1000.(结合macron可以使用它。)