ANSI 代码在字符串的 ndarray 中不起作用

卢卡斯

我认为解释我的问题的最好方法就是展示它:

import numpy as np

coloured_letters = np.ndarray(shape=(2, 2), dtype="<U100")

print("\033[1;32;40m A test \033[30m")
def fill(ndarray):
    y = 0
    x = 0
    while y < 2:
        while x < 2:
            ndarray[y][x] = "\033[1;32;40m A test \033[30m"
            x = x + 1
        x = 0
        y = y + 1


fill(coloured_letters)
print(coloured_letters)

输出:

 A test
[['\x1b[1;32;40m A test \x1b[30m' '\x1b[1;32;40m A test \x1b[30m']
 ['\x1b[1;32;40m A test \x1b[30m' '\x1b[1;32;40m A test \x1b[30m']]

其中“A 测试”为亮绿色,背景为白色。

普雷斯顿·哈格

Numpy 准确地存储了您想要的值。但是,当您打印变量coloured_lettersnumpy 时,会调用__repr__or__str__函数将字符串转换为可打印的表示形式。这意味着它会将每个字符串转换为终端可以仅使用普通 ASCII 字符打印的内容。

如果您从中打印任何元素,coloured_letters它将正确打印。如果您仍然想获得 numpy 数组的数组格式,您可以访问每个元素并在它们周围打印括号。

for row in range(len(coloured_letters)):
  print("["+",".join(coloured_letters[row])+"]")

这将打印如下内容,每一个A test都是白色的绿色。

[A test, A test]
[A test, A test]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章