pydoc.render_doc() 添加字符 - 如何避免?

3 投票
1 回答
1405 浏览
提问于 2025-04-17 17:25

已经有一些问题提到过这个,但似乎没有人真正解决它。

import pydoc
hlpTxt = pydoc.render_doc(help)

这个已经能做到我想要的功能!在(正确的)控制台打印出来时看起来完美,但却多了些额外的字符:

_\x08_H\x08He\x08el\x08lp\x08pe\x08er\x08r

比如在Maya里,它看起来像是充满了符号!而help()显示得也很完美。

去掉\x08后,每个字母都会多出一个:

__HHeellppeerr

这也没什么用。

有人评论说,当把它传给子进程或者写入文件时可以正常工作。我也试过,但没成功。有没有其他方法呢

hlpFile = open('c:/help.txt', 'w')
hlpFile.write(hlpTxt)
hlpFile.close()

?因为这样我还是遇到同样的问题。Notepad++实际上在那些地方显示了BS符号。是的,显然是代表退格。

总之:这些符号被添加的肯定是有原因的,虽然去掉它们可能有效,但我想不出为什么不能一开始就不产生这些符号!

所以最后有没有其他的pydoc方法我没发现?或者是我还没看到的str.encode/decode的东西?

顺便说一下:我不是在找help.__doc__

1 个回答

8

在Python 2中,你可以用 pydoc.plain 来去掉加粗的部分:

pydoc.plain(pydoc.render_doc(help))

 

>>> help(pydoc.plain)
Help on function plain in module pydoc:

plain(text)
    Remove boldface formatting from text.

 

在Python 3中, pydoc.render_doc 允许你使用一个 renderer

pydoc.render_doc(help, renderer=pydoc.plaintext)

 

撰写回答