我的 Python 程序如何将用户的键盘输入转换为大写,就像用户启用了 CAPS LOCK 一样?
我想模拟一个在没有任何小写字母的计算机上运行的程序(即比 ASCII 更受限制的字符集)。
用户在键盘上交互式键入的文本输入应该实时强制为大写,就像用户键入的内容一样。
命令行界面可以使用Python的标准cmd https://docs.python.org/3/library/cmd.html图书馆,或者其他东西。转换可以通过自定义输入流或其他方式完成。
我对完全重新实现逐字符输入系统不感兴趣;例如,我想继续使用readline
如果有的话。我只想翻译结果流,因为它在视觉上出现并进入程序。
有一个 Unix 终端属性,OLCUC
,这听起来很有希望;但它是在 Single Unix 规范中标记为 LEGACY http://pubs.opengroup.org/onlinepubs/7908799/xbd/termios.html,并且其实现不可靠(导致某些正常控制序列或 Unicode 文本产生垃圾)。所以这不是一个解决方案。
尤其重要的是,界面应该与实际输入大写文本的人在视觉上没有区别;显示屏应该只将用户的输入显示为程序将处理的大写文本。
使用 getch:http://code.activestate.com/recipes/134892/ http://code.activestate.com/recipes/134892/
追加到之后stdin.read
in __call__
执行以下操作:
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1).upper()
sys.stdout.write(ch)
...
您可以只执行一个条件 while (例如,直到用户按 Enter 键)来逐个字符获取字符并将其回显为大写:
getch = _Getch()
text = ''
while True:
char = getch()
if ord(char) == 13: # ascii carriage return
break
else:
text += char
print text
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)