2

シェルのドキュメントを検索可能な Web ページに移動するのに役立つ小さな Python ユーティリティを-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

ドキュメントには、古代のライン プリンターの方法で実行された重ね打ち文字が含まれています。各文字を出力し、その後にバックスペース (\b別名\x08) を入力し、その後に同じ文字をもう一度出力します。したがって、「NAME」は になり"N\bNA\bAM\bME\bE"ます。そのように出力しないようにプログラムを納得させることができれば、それが最善です。それ以外の場合は、次のようなものでクリーンアップできますoutput = re.sub(r'\x08.', '', output)

于 2012-07-13T16:26:01.703 に答える
1

端末で文字を太字としてマークする一般的な方法は、文字を出力し、その後にバックスペース文字を続け、その後に再び文字自体を出力することです (機械式タイプライターで行うのと同じように)。端末エミュレーターはxterm、そのようなシーケンスを検出して太字に変換します。stdout が端末でない場合、プログラムはそのようなシーケンスを出力すべきではありませんが、ツールが出力する場合は、自分で混乱を解消する必要があります。

于 2012-07-13T16:23:17.817 に答える