在python中解码包含 _\x08__\x08_d\x08de\x08el\x08li\x08it\x08te\x08em 的字符串

1 投票
2 回答
11056 浏览
提问于 2025-04-16 22:16

我有一些字符串,其中包含各种奇怪的字符,还有一些正常的字母。我想把所有这些“奇怪”的字符转换成它们正常的样子。所以我想问:有没有一种简单的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 是可以的,因为它表示的是行的结束。

撰写回答