pydoc.render_doc() 添加字符 - 如何避免这种情况?

ewe*_*ody 3 python character-encoding pydoc

已经有一些问题涉及这一点,但似乎没有人真正解决它。

import pydoc
hlpTxt = pydoc.render_doc(help)
Run Code Online (Sandbox Code Playgroud)

已经做了我想要的!打印到(右)控制台时看起来完美无缺,但它包含了那些额外的字符:

_\x08_H\x08He\x08el\x08lp\x08pe\x08er\x08r
Run Code Online (Sandbox Code Playgroud)

例如,在 Maya 中,它看起来像是充满了?-symbols!同时也help()使其完美无瑕。

删除\x08给我留下了一个额外的字母:

__HHeellppeerr
Run Code Online (Sandbox Code Playgroud)

这也不是很有用。有人评论说,当通过管道传输到子进程或文件时,它对他有用。我也没有做到这一点。还有其他方法吗

hlpFile = open('c:/help.txt', 'w')
hlpFile.write(hlpTxt)
hlpFile.close()
Run Code Online (Sandbox Code Playgroud)

? 因为这给我留下了同样的问题。Notepad++ 实际上在这些地方显示了 BS 符号。是的,显然是退格。

无论如何:必须有一个原因,这些符号被添加并在之后删除它们可能会起作用,但我无法想象没有办法让它们首先不被创建!

那么最后还有另pydoc一种我缺少的方法吗?或者str.encode/decode我还没有看到的东西?

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

Pav*_*sov 6

在python 2中,您可以使用以下命令删除粗体序列pydoc.plain

pydoc.plain(pydoc.render_doc(help))
Run Code Online (Sandbox Code Playgroud)

 

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

plain(text)
    Remove boldface formatting from text.
Run Code Online (Sandbox Code Playgroud)

 

在 python 3 中pydoc.render_doc接受一个renderer

pydoc.render_doc(help, renderer=pydoc.plaintext)
Run Code Online (Sandbox Code Playgroud)