在python中解码包含 _\x08__\x08_d\x08de\x08el\x08li\x08it\x08te\x08em 的字符串
我有一些字符串,其中包含各种奇怪的字符,还有一些正常的字母。我想把所有这些“奇怪”的字符转换成它们正常的样子。所以我想问:有没有一种简单的Python方法可以做到这一点?
举个例子,我有这样一个字符串:
Mymethods defined here:
|
| __add__(...)
| x.__add__(y) <==> x+y
这个字符串的输出结果是:
Mymethods defined here:\n
| \n
| _\x08__\x08_a\x08ad\x08dd\x08d_\x08__\x08_(...)\n
| x.__add__(y) <==> x+y
2 个回答
8
一些(非常旧的)软件曾经用一种方法在打印机上模拟粗体字,比如在打字机上使用的菊花轮或高尔夫球头打字机。它的做法是先打印一个字符,然后打印一个退格符,再打印同样的字符。看起来你的文本就是这种情况的一个例子。
这意味着你需要不仅删除退格符,还要删除它后面的那个字符:
>>> s = "_\x08__\x08_d\x08de\x08el\x08li\x08it\x08te\x08em in it"
>>> import re
>>> re.sub("\x08.", "", s)
'__delitem in it'
>>>
当然,更好的方法是修复生成这个文本的程序,让它以更有效的方式生成粗体文本。
0
\x08
是一个字符,表示的是 退格键
。
所以你应该使用正则表达式来替换它。
s/.\\x08//
这样就可以把所有的 \x08
去掉了。
\n
是可以的,因为它表示的是行的结束。