需要帮助处理此代码:
import plotext as plt
from contextlib import redirect_stdout
import io
import curses
import locale
locale.setlocale(locale.LC_ALL, '')
code = locale.getpreferredencoding()
PlotFile = io.StringIO()
with redirect_stdout(PlotFile):
y = plt.sin() # sinusoidal signal
plt.scatter(y, marker='dot', )
plt.title("Scatter Plot")
plt.plot_size(10, 10)
plt.show()
PlotFile.seek(0)
w = PlotFile.readlines()
allchar = []
vischar = []
dechar = []
bychar = []
def main (stdscr):
curses.start_color()
curses.use_default_colors()
k = 0
for i in w:
for c in i:
if ord(c) not in allchar:
allchar.append(ord(c))
vischar.append(c)
dechar.append(c.encode('utf-8'))
bychar.append(bytes(dechar[-1]))
stdscr.addstr(chr(ord(c)).encode('utf-8'))
print(i)
k += 1
stdscr.refresh()
curses.napms(3000)
curses.wrapper(main)
print(allchar)
print(vischar)
print(dechar)
print(bychar)
在Windowspython3.9和wincurses上使用VScode。在普通终端机上工作良好,在咒骂中显示奇数字符,如[m,[107 m]等。尝试了编码和uft的混乱,仍然无法解决如何处理这个问题。正如我已经指出的,默认情况下使用uft-8进行诅咒,而python字符串是以utf-16编码的,因此必须进行转换。当尝试从allchar
列表逐个打印每个字符时,显示的所有字符。但我注意到,有[
字符打印在诅咒,这不是在原始的背景文字输出。我认为在中间的某个地方是unicode问题,但仍然找不到。任何帮助都将不胜感激。
发布于 2022-10-31 17:34:30
这个示例不运行在我的机器上,但我可以告诉您,plotext
在彩色绘图的ansi代码中输出[
。例如,下面是红色的字符串"plotext"
:
'\x1b[38;5;1mplotext\x1b[0m'
如果不需要,请尝试使用clear_color()
方法删除颜色,从而删除不需要的ansi代码。祝好运。
https://stackoverflow.com/questions/71450124
复制相似问题