如何让记录器解释回车 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
的上下文中)
.*
- 零个或多个字符
我正在从串行端口接收进度状态,我想在使用 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
的上下文中).*
- 零个或多个字符