使用文件后,我发现vim
和cat
的输出存在差异。在vim上我们看到ctrl字符,如^ M,^ H;同一文件中的cat解释此输出并将它们转换为carriage,backspace等。当我通过python读取文件时,这些控制字符将转换为它们的python表示,即' \ r'或者' \ x08'退格。
这是问题所在。我通过Python逐行读取此文件,其中包含许多控制字符。有没有一种方法python以cat
的方式解释这些控制字符。所以当它遇到一个' \ x08'我希望它删除这个角色。
我可以编写一个python程序来分析字符串并根据控制字符执行操作,但它们有很多不同类型。我想知道python中是否存在可以执行此操作的实用程序。一个例子是:
这是字符串的存储方式。 (可以在写入文件时看到,但不能在打印到终端时看到)
x = "Hell \x08\x08\0x8o"
这就是我希望它存储的方式(如果我们打印上面的字符串,我们得到这个,但这不是它的存储方式。)
"Hello?"
我必须重申的一点是,当我们打印输出时,它看起来很好但是如果我将它写入文件或将其转换为列表然后我看到控制字符
lst = []
for i in x:
lst.insert(-1,i)
print x
['H', 'e', ' l', 'l', ' ', ' ', ' ', '\x08', '\x08', '\x08', 'o']
这是我的预期输出
['H', 'e', 'l ', 'l', 'o']
打印字符串的任何努力都由终端解释,但不是字符串的存储方式。如果我们将字符串写入文件,那么我们也可以看到差异。