2011-08-01 9 views
0

では動作しません。私が書いているプログラムのヘルプリストを印刷しようとしています。そこで私は辞書を定義します。ここで、キーは、ユーザーが明確にしたいと思うかもしれない単語であり、値は単語の説明です。それから私はfor... in...ループを使ってすべてを印刷します。シンプルに言えば:フォーマットオペレータ改質剤は、コードのこの作品は、狂気私を運転しているのPython 3スクリプト

ERROR = '\x1B[1;31m ERROR!! \x1B[0m' 
WARNING = '\x1B[1;33m WARNING! \x1B[0m' 
SUCCESS = '\x1B[1;32m Operation successful! \x1B[0m' 
ABORTED = '\x1B[1;33m Operation aborted! \x1B[0m' 
help_descriptions = {'\x1B[34m NUMBERS \x1B[0m':'are the options you can take.',\ 
       ERROR:'means you ran into and error and the program can\'t go on.',\ 
       WARNING:'means that the data you entered might cause problems.',\ 
       SUCCESS:'means that no run-time errors where encoutered.',\ 
       ABORTED:'means you aborted a previous option, deleting\n the data associated.'} 
def HelpMe(): 
print(70 * '~') 
print(' HELP') 
print(70 * '~') 
for key in help_descriptions.keys(): 
    print('%10s %s' % (key, help_descriptions.get(key))) 
print(70 * '~') 

動作しない唯一のものは%10sトークンです。つまり、キーの値は表示されますが、必要に応じて余分なスペースは入れません。私は、対話型のセクションでコード

print('%10s' % 'foo') 

のこの部分を実行しようとした、出力が正しいです。

は、あなたがたのうち、それを動作させる方法のアイデアを持っていますか?

追加情報:私はのUbuntu 11.04を実行しているLinuxマシン上でのPython 3を実行しているよ。このコードは、静的テキストやテキストを出力する簡単な関数を格納するために書いたカスタムモジュールの一部です。だから私はメインアプリケーションでこのモジュールをインポートしますが、スタンドアロンではありません。

ありがとうございます。

+2

あなたは、Python 3、 ''%演算子をドロップすると 'str.format' – JBernardo

+0

あなたが正しいを使用を使用している場合、私はまだ適切にPythonの2とPython 3の機能を注文しようとしています。 :P – mmassaro

答えて

3

問題は、で、長さが少なくとも10文字です。ANSIエスケープ文字がカウントされることを覚えておいてください。

  1. 希望の幅になるまでフィールド幅を大きくします(すべてのフィールドに同じエスケープ文字が含まれているように見えます)。
  2. エスケープ文字を削除し、パディングのための結果を使用しています。
  3. パッドのラベル(「WARNING!」のような)エスケープ文字を追加する前に、正しいフィールド幅に。

これらのいずれもが、所望の効果を達成する必要があります。

+0

4. cursesライブラリを使用 –

+0

ありがとうございました@ジェレミーは問題でした。私はANSIエスケープ文字が考慮されたことを認識しませんでした。 – mmassaro

関連する問題