跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • print 的 string 内含有中文,如果为套上了颜色定义前缀,那么 ljust, rjust 的位置控制,基本上是废了? 如何破?
未分類
20 3 月 2021

print 的 string 内含有中文,如果为套上了颜色定义前缀,那么 ljust, rjust 的位置控制,基本上是废了? 如何破?

print 的 string 内含有中文,如果为套上了颜色定义前缀,那么 ljust, rjust 的位置控制,基本上是废了? 如何破?

資深大佬 : qazwsxkevin 1

如:

AStr = "Test,这是一个中英混合的字句." BStr = "33[31m" + AStr  + "33[0m" # 使 AStr 变成红色字体  print(len(AStr)) print(len(BStr))  # 这里的长度输出完全是两回事  # 那么如果有这样一个 string def colorRed(s)     retrun "33[31m" + s  + "33[0m"  assembleStr =  colorRed("Test") + "," + colorBlue("这是一个") + colorYellow("中英混合的字句.")  ...... ... .  print(xxx.ljust(20),       assembleStr.ljust(80),       yyy.jlust(30))        assembleStr 的 ljust 根本不可精准控制位置,多行内容长短不一内容的话,整体屏幕上把后面 yyy 的位置弄得不整齐 ljust,rjust 在多颜色混合组装 string 的情况下,基本上是废了...  

想寻求 2 种解决方法:

1 、更进一步如何精准控制 jljust 的窍门?
2 、是否有这种适合多颜色混合 print,而且能精准控制长度的轮子?

大佬有話說 (14)

  • 資深大佬 : BrettD

    如果是以 UTF-8 编码储存在字符串里的话,截取子字符串应该按照 UTF-8 编码规则计算下表如

  • 資深大佬 : BrettD

    如果是以 UTF-8 编码储存在字符串里的话,截取子字符串应该按照 UTF-8 编码规则计算下标位置

  • 資深大佬 : Pagliacii

    https://github.com/willmcgugan/rich

  • 主 資深大佬 : qazwsxkevin

    @BrettD 未能明白原理…

  • 主 資深大佬 : qazwsxkevin

    @Pagliacii 简单试了一下,以它官网的例子 print 都不能正确显示出字体颜色……PyCharm,3.66 环境…

  • 資深大佬 : oott123

    先补白 再着色

  • 資深大佬 : Pagliacii

    @qazwsxkevin #5 Win10 CMD 和 Microsoft Terminal 都可以正常显示颜色。如果你的环境不能正确显示颜色的话,那么你是不是使用了 PyCharm 自带的终端?

  • 主 資深大佬 : qazwsxkevin

    @oott123 感谢您的解答,我在其他资料了解到 pycharm 的控制台界面不支持默认颜色空间,那么如果我要在 pycharm 调试 rich,那就是很困难的事了吧,还有您提到的补白是怎么理解呢?抱歉,问得那么罗嗦

  • 主 資深大佬 : qazwsxkevin

    @Pagliacii 的确是的,Console 显示颜色流水字符很必须,而我一直在用 pycharm 来调试程序,要换 IDE ?

  • 資深大佬 : Pagliacii

    @qazwsxkevin #9 如果是 Windows 环境的话,可以用一下巨硬出品的 Terminal,https://github.com/microsoft/terminal 。

    如果是 macOS 的话,可以使用 iTerm2 。如果是 Linux 的话,自带终端通常就可以

  • 資深大佬 : Pagliacii

    @qazwsxkevin #9 IDE 只是方便你写代码和调试而已,不要被它约束住

  • 資深大佬 : oott123

    @qazwsxkevin 补白就是说你用 ljust / rjust 补空格调整位置的意思,如果是因为颜色控制字符影响了空白数量,那么先调整位置再加颜色就可以了。

  • 資深大佬 : AndyAO

    @qazwsxkevin #9 可以将内置终端更换为 pwsh,而不是默认 CMD,没记错的话,那里是支持 ANSI 色彩的,不过使用习惯需要改改

  • 資深大佬 : no1xsyzy

    排版的话 tabulate[widechars] 吧,默认就支持 ANSI 控制字符,添加 widechars 支持双宽字符。

    colorama 可以在 CMD 里使用 ANSI 颜色控制,方式是挂接 sys.stdout 和 sys.stderr,并将控制字符串翻译为 win32 API call

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具