如何将退格\ x08应用于字符串?

时间:2018-09-11 18:14:11

标签: python python-2.7

我有一个utf-8列表变量行,如下所示:
[u' ASUS-ASUS-131:66 BF-24-XX-XX-BF--More-- \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 但是如果我逐行打印 for i in lines     print i

它将打印 ASUS-ASUS-131:66 BF-24-XX-XX-BF-A0 ASUS-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输出为空的变量分配给变量

2 个答案:

答案 0 :(得分:2)

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

代码

p = beam.Pipeline(...)
[...code...]
p.run().wait_until_finish()

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

输出

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))

答案 1 :(得分:1)

打印repr(some_line)。这将显示转义(\x08)个字符。