2

我正在编写一个小的 python 实用程序来帮助将我们的 shell-help文档移动到可搜索的网页,但我遇到了一个奇怪的问题:

output = subprocess.Popen([sys.argv[1], '--help'],stdout=subprocess.PIPE).communicate()[0]
output = output.split('\n')
print output[4]
#NAME
for l in output[4]:
    print l
#N
#A
#
#A
#M
#
#M
#E
#
#E

#or when written, n?na?am?me?e

它对heading/subheading文档中的任何内容都执行此操作,这使其几乎无法使用。

有关获得正确格式的任何提示?我哪里搞砸了?

谢谢

4

2 回答 2

4

该文档包含以古老的行打印机方式完成的过度字符:打印每个字符,然后是退格键(\baka \x08),然后再次是相同的字符。所以“NAME”变成了"N\bNA\bAM\bME\bE"。如果您可以说服程序不要那样输出,那将是最好的;否则,你可以用类似的东西清理它output = re.sub(r'\x08.', '', output)

于 2012-07-13T16:26:01.703 回答
1

在终端中将字符标记为粗体的一种常用方法是打印字符,然后是退格字符,然后是字符本身(就像在机械打字机上那样)。终端仿真器喜欢xterm检测此类序列并将其转换为粗体字符。如果标准输出不是终端,程序不应该打印这样的序列,但如果你的工具是这样,你将不得不自己清理混乱。

于 2012-07-13T16:23:17.817 回答