如何使用python打印特殊字符

时间:2012-08-11 08:08:03

标签: python terminal

我想在控制台上呈现特殊的非ascii字符,就像在旧的DOS程序中用于在终端中绘制窗口的字符一样。这里列出的字符为http://vt100.net/dec/vt320/glyphs

我如何用Python做到这一点?

更新我特别想要绘制他们在渲染窗口/对话框/表格中使用的字符,如下所示http://en.wikipedia.org/wiki/File:Norton_commander.png

2 个答案:

答案 0 :(得分:3)

您可以使用Python curses库,它是* nix系统上标准库的一部分,或者您可以使用Urwid作为更高级别的库来创建控制台接口。

本文档的

Constants段包含有关如何在X仿真器中绘制特殊字符的信息(如果它们支持VT100s继承的功能)。如果模拟器不支持这种替代字符集 - 使用ascii近似。我想这就是你要找的东西。

答案 1 :(得分:1)

以下是如何直接打印到控制台,尽管像curses这样的库肯定更容易。

找出控制台支持的字符:

import sys
print 'encoding =',sys.stdout.encoding
print ''.join(chr(i) for i in range(256)).decode(sys.stdout.encoding)

encoding = cp437
 ☺☻♥♦
♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂Çüéâäà
åçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²
■ 

然后将它们打印为Unicode字符。确保以声明的编码保存源文件。 UTF-8可以处理任何字符,但如果您打印一个终端不支持,您将获得UnicodeEncodeError

# coding: utf8
print u'╔═╦═╗╓─╥─╖╒═╤═╕┌─┬─┐'
print u'║ ║ ║║ ║ ║│ │ ││ │ │'
print u'╠═╬═╣╟─╫─╢╞═╪═╡├─┼─┤'
print u'║ ║ ║║ ║ ║│ │ ││ │ │'
print u'╚═╩═╝╙─╨─╜╘═╧═╛└─┴─┘'

╔═╦═╗╓─╥─╖╒═╤═╕┌─┬─┐
║ ║ ║║ ║ ║│ │ ││ │ │
╠═╬═╣╟─╫─╢╞═╪═╡├─┼─┤
║ ║ ║║ ║ ║│ │ ││ │ │
╚═╩═╝╙─╨─╜╘═╧═╛└─┴─┘