1. ホーム
  2. python

[解決済み] 文字列を固定幅で印刷するには?

2022-05-07 01:12:43

質問

私は以下のコードを持っています(文字列内のすべての順列の出現を表示する)。

def splitter(str):
    for i in range(1, len(str)):
        start = str[0:i]
        end = str[i:]
        yield (start, end)
        for split in splitter(end):
            result = [start]
            result.extend(split)
            yield result    

el =[];

string = "abcd"
for b in splitter("abcd"):
    el.extend(b);

unique =  sorted(set(el));

for prefix in unique:
    if prefix != "":
        print "value  " , prefix  , "- num of occurrences =   " , string.count(str(prefix));

文字列varaibleに存在する順列の出現をすべて表示したい。

順列は同じ長さではないので、幅を固定し、このような素敵な形で印刷したいのです。

value   a - num of occurrences =    1
value   ab - num of occurrences =    1
value   abc - num of occurrences =    1
value   b - num of occurrences =    1
value   bc - num of occurrences =    1
value   bcd - num of occurrences =    1
value   c - num of occurrences =    1
value   cd - num of occurrences =    1
value   d - num of occurrences =    1

を使用するにはどうすればよいですか? format を実行するには?

こういう書き込みがありましたが、英数字の文字列とはうまくいきませんでした。

Python 文字列フォーマット 固定幅

pythonで固定長を設定する

どのように解決するのですか?

2013-12-11 を編集 - この回答は非常に古いものです。今でも有効で正しいものですが、これを見る人は、より良いものを選ぶべきです。 新しい書式構文 .

を使用することができます。 文字列フォーマット このように

>>> print '%5s' % 'aa'
   aa
>>> print '%5s' % 'aaa'
  aaa
>>> print '%5s' % 'aaaa'
 aaaa
>>> print '%5s' % 'aaaaa'
aaaaa

基本的には

  • その % 文字は python にトークンに何かを代入しなければならないことを通知します。
  • その s 文字は python にトークンが文字列になることを通知します。
  • その 5 (または任意の数)は、5文字までのスペースで文字列を埋めるようにpythonに通知します。

あなたの具体的なケースでは、次のような実装が可能です。

>>> dict_ = {'a': 1, 'ab': 1, 'abc': 1}
>>> for item in dict_.items():
...     print 'value %3s - num of occurances = %d' % item # %d is the token of integers
... 
value   a - num of occurances = 1
value  ab - num of occurances = 1
value abc - num of occurances = 1

SIDE NOTE の存在を知っているかどうかだけです。 itertools モジュール . 例えば、次のようにすると、すべての組み合わせのリストを1行で得ることができます。

>>> [''.join(perm) for i in range(1, len(s)) for perm in it.permutations(s, i)]
['a', 'b', 'c', 'd', 'ab', 'ac', 'ad', 'ba', 'bc', 'bd', 'ca', 'cb', 'cd', 'da', 'db', 'dc', 'abc', 'abd', 'acb', 'acd', 'adb', 'adc', 'bac', 'bad', 'bca', 'bcd', 'bda', 'bdc', 'cab', 'cad', 'cba', 'cbd', 'cda', 'cdb', 'dab', 'dac', 'dba', 'dbc', 'dca', 'dcb']

で、出現回数を取得することができます。 combinations と連動して count() .