你好,我的编码伙伴!
我是一个对Python和一般编程的绝对初学者。现在,我正在写一个代码,把普通的阿拉伯数字转换成罗马数字。对于大于3999的数字,罗马人通常在一个字母上写一行,使其大一千倍。例如,上面有一条线的IV代表4000。在Python中这怎么可能?我知道您可以通过编写“\u203E”来创建“overscore”。我怎么能让这个出现在一封信上而不是旁边呢?
当做

最佳答案

您需要改用组合字符U+0304。

>>> print(u'a\u0304')
ā

U+0305可能是更好的选择(正如viraptor所建议的)。您也可以使用Unicode罗马数字(U+2160到U+217f)而不是常规的大写拉丁字母,尽管(至少在我的终端中)它们在上划线时渲染效果不好。
>>> print(u'\u2163\u0305')
Ⅳ̅
>>> print u'I\u0305V\u0305'
I̅V̅

(或如我所见:
python - 在Python中进行上划线-LMLPHP
请注意,上划线居中,但没有完全覆盖单个字符的罗马数字4。)
(任何纯文本选项只能与运行代码的人使用的字体和呈现程序一样好。举个例子,当我输入这个时,I+V版本甚至不一致地显示;有时,overbars在字母上,有时它们跟在字母后面。)

09-28 06:36