gpt4 book ai didi

python - 中和不可见的 ASCII 字符以打印 ASCII 表

转载 作者:行者123 更新时间:2023-12-01 02:26:25 25 4
gpt4 key购买 nike

我正在尝试编写一个简短的脚本(作为教程)来显示前 128 个 ASCII 字符中哪些是可打印、可识别的字符。

以下使用“is in string.printable”的脚本部分有效,但仍然会触发换行等操作。

是否可以添加一两行来捕获并用空格替换这些控制字符,以便表格看起来不错并显示可打印字符?

为菜鸟可读性而手写:

import string
lines = []
for i in range(8):
line = []
for j in range(16):
k = i + j *16
thing = chr(k)
if thing not in string.printable:
thing = ' '
line.append(thing)
lines.append(line)

for line in lines:
print "".join(line)

空闲:

enter image description here

复制/粘贴到 SE 中,包括四个空格:

   0@P`p
!1AQaq
"2BRbr
#3CScs
$4DTdt
%5EUeu
&6FVfv
'7GWgw
(8HXhx
)9IYiy

*:JZjz
+;K[k{
,<L\l|

-=M]m} .>N^n~ /?O_o

最佳答案

根据OP的评论更新了代码以替换不可打印的字符。

from string import printable, whitespace

replace_ch = ' ' # The character to replace non-printable characters with
whitespace_ch = ' ' # The character to replace whitespace characters with

# For console output
out_width = 8
out_height = 16

chars = [chr(i) for i in range(128)]
# Replace whitespace characters
chars = [whitespace_ch if c in whitespace else c for c in chars]
# Replace non-printable characters
chars = [c if c in printable else replace_ch for c in chars]
# Form lines for printing
lines = [[chars[i + j * out_height] for j in range(out_width)] for i in range(out_height)]

for line in lines:
print(''.join(line))

输出:

   0@P`p
!1AQaq
"2BRbr
#3CScs
$4DTdt
%5EUeu
&6FVfv
'7GWgw
(8HXhx
)9IYiy
*:JZjz
+;K[k{
,<L\l|
-=M]m}
.>N^n~
/?O_o

另一种方法是简单地避免使用 ASCII 的前 32 个字符,因为它们被定义为控制字符。检查字符 cord(c) 可能会更有效。

关于python - 中和不可见的 ASCII 字符以打印 ASCII 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47341255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com