python - 如何将 backspace\x08 应用于字符串?

标签 python python-2.7

我有一个像这样的 utf-8 列表变量行:
[u' ASUS-ASUS-131:66 BF-24-XX-XX-BF--更多--\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08-A0,'u' ASUS-ASUS-084:R0 AX-24-AX-AC-AX-10]

如果我执行 print lines 它将打印与上面相同的退格\x08 但是如果我逐行打印 我在行中 打印 i

它会打印 ASUS-ASUS-131:66 BF-24-XX-XX-BF-A0 华硕-ASUS-084:R0 AX-24-AX-AC-AX-10 我知道打印功能实际上是在执行 backspace 但是有没有办法将打印值分配给变量以摆脱退格? 我已经尝试过 str_var = str(i) 但它不起作用

举个例子

>>> test='                                                                                
--More-- \x08\x08\x08\x08\x08\x08\x08\x08\x08         
\x08\x08\x08\x08\x08\x08\x08\x08\x08'
>>> print test

>>> repr(test)
"'                                                                                
--More-- \\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08         
\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08'"

我不明白为什么它会这样显示,我想将空的 print 输出分配给一个变量

最佳答案

Python 本身并不特别对待退格键。您可以通过将字符串视为堆栈来应用退格键,其中退格键弹出最后一个字符。

代码

def do_backspace(s):
    chars = []
    for c in s:
        if c == '\b' and chars:
            chars.pop()
        else:
            chars.append(c)

    return ''.join(chars)

s = 'Original string: foo\b\b\b'
print(repr(s))

new_s = do_backspace(s)
print(repr(new_s))

在这里,多余的退格键会被忽略,但您可以添加一个条件来区别对待它们。

输出

'Original string: foo\x08\x08\x08'
'Original string: '

关于python - 如何将 backspace\x08 应用于字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52281909/

相关文章:

python - mysql-connector-python 2.0.1-1 与 python-mysql.connector 冲突

python-2.7 - 在Python中,=“”在打印语句中的作用是什么?

python-2.7 - 将数据从 2d 转换为 3d numpy 数组

python - 如何将多个正则表达式组合成一行?

python - 在这种情况下如何通过匹配公共(public)值来生成新的数据框?

python - 在 Python 中打印 subprocess.Popen() 输出

python-2.7 - OpenShift Online 上的 Apache mod_wsgi 正在寻找的入口点是什么?

Python - 在函数中使用来自另一个模块的函数

python - 将数据框的列组合成新的数据框

python - 我如何/应该使用 Python 将 html 文档分成几个部分? (技术上和逻辑上)