说我有字符串 '\033[2KResolving dependencies...\033[2KResolving dependencies...'
在 Python 控制台中,我可以打印它,它只会显示一次
Python 3.10.9 (main, Jan 19 2023, 07:59:38) [GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> output = '\033[2KResolving dependencies...\033[2KResolving dependencies...'
>>> print(output)
Resolving dependencies...
有没有办法得到一个只包含打印输出的字符串?换句话说,我希望有一些功能
def evaluate_ansi_escapes(input: str) -> str:
...
这样evaluate_ansi_escapes(output) == 'Resolving dependencies...'
编辑:我想出了以下权宜之计
import re
def evaluate_ansi_escapes(input: str) -> str:
erases_regex = r"^.*(\\(033|e)|\x1b)\[2K"
erases = re.compile(erases_regex)
no_erases = []
for line in input.split("\n"):
while len(erases.findall(line)) > 0:
line = erases.sub("", line)
no_erases.append(line)
return "\n".join(no_erases)
这确实成功地产生了我想要的输出:
>>> evaluate_ansi_escapes(output)
'Resolving dependencies...'
但我很想知道是否有更简单的方法来解决这个问题。