我有一个这样的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-A0ASUS-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 - 如何将退格\x08应用于字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52281909/