python - 如何将包含控制字符的字符串转换为应用了控制字符的字符串?
问题描述
我需要获取以下字符串,就好像它是使用打印的一样print()
str = '1234\b\b\b\b\r5678\n'
我想为以下形式的输出 (str2) 行应用退格字符('\b'、'\r' 等):
str2 = '5678\n'
另一个例子:
str = '1234\b\r5678\nqwert\b\b\b\b\b\b\b\b\r1234'
结果:
str = '5678\n1234'
解决方案
这将至少处理 \b 和 \r 但它不是您可能遇到的任何控制序列的通用解决方案
import re
def convert_to_term(str):
"""
coverts \b (\x08) and \r as a printout to terminal would represent it
"""
# \b backspace
str = re.sub(r'.\x08', '', str)
# \r carriage return
str = re.sub(r'(^|\n)[^\n]+\r', r'\1', str)
return str
in_str = '1234 \b \b \b \b \r5678 \n'
out_str = convert_to_term(in_str)
print ("\"" + out_str + "\"")
print (len(out_str))
in_str = '1234\b\r5678\nqwert\b\b\b\b\b\b\b\b\r1234'
out_str = convert_to_term(in_str)
print ("\"" + out_str + "\"")
print (len(out_str))
给出:
"5678
"
6
"5678
1234"
9
推荐阅读
- php - 从服务器变量到 CSS 的动态样式
- phpexcel - 电子表格中的所有工作表似乎都是对工作表 0 的引用
- python - 在 VS Code 中添加到 PYTHONPATH
- python - 使用python(通过请求或其他方式)检索通过下拉选择的html表
- angular - 如何使用 Angular 8 使用材料表显示数据源
- c - GLFW 窗口不关闭
- python - 如何在 tkinter python 中关闭该文件之前打开具有最大化窗口的文本文件并对其进行截图?
- python - 如何添加两个不同长度的列表?
- angular8 - 如何在Angular中使用[fromcontrol]从字段中加载列表?
- c - 操作字符时的段错误