如何让记录器解释回车 returns 就像它们出现在屏幕上一样?

How to make logger interpret carriage returns like they would appear on the screen?

我正在从串行端口接收进度状态,我想在使用 python 记录器登录文件之前将回车 return 解释为打印在屏幕上的样子.

截断示例:

receivedData = "command x exec: \nin progress    0/8192\rin progress 8096/8192\rin progress 8128/8192\rin progress 8160/8192\rin progress 8192/8192\nDONE"

我希望结果字符串如下所示: "command x exec: \nin progress 8192/8192\nDONE" 拥有一个如下所示的记录器文件:

command x exec: 
in progress 8192/8192
DONE

而不是我直接登录的结果receivedData:

command x exec: 
in progress    0/8192
in progress 8096/8192
in progress 8128/8192
in progress 8160/8192
in progress 8192/8192
DONE

实现该目标的最简洁方法是什么?

您可以使用正则表达式删除不需要的部分:

>>> import re
>>> re.sub('^.*\r', '', receivedData, flags=re.M)
'command x exec: \nin progress 8192/8192\nDONE'

细分:

  • ^ - 行首(在 re.M 的上下文中)
  • .* - 零个或多个字符