0
文字列を特定の長さ(端末幅)にトリミングする方法はありますか?文字列を端末の幅に合わせますが、TABのようなワイド文字を考慮に入れてください。
が、私はこれらの行を持って、line
はバイト文字列であるとmax_width
は132に評価されます
max_width = shutil.get_terminal_size().columns
output = "{:>6d}: {}".format(n, line.decode(codec, "replace")).rstrip("\n")
print(output[:max_width])
print(len(output[:max_width]))
そして出力例は、このようになります:
23: ��G&S��.��+��HL=`����W9�yi��l�����p����:��d*p��i�6L�h<��
v�I��S�� �u�`:%��# ��/����TAE����{�(y�Ij��B����33o3
132
だから、のpython3はそれだけだと思っ132文字ですが、端末(gnome-terminal
、Ubuntu 15.10)は、wc
によると、それを293文字に解釈します。
1行に正しく収まるように、行を正しく切り詰めるにはどうすればよいですか?
TAB文字に使用するスペースの数は、完全に端末/アプリケーション/ユーザーまでです。これは、整列のためにタブを使用しない理由です。スペースに変換してください。 –
文字列を切り捨てる前に、すべての「ワイド」文字を固定数のスペースで置き換えることはできますか? TAB以外のキャラクターは、私が当てにしなければならないものは何ですか? (ラインフィードやキャリッジリターンなど)一度にすべてを処理する最も簡単な方法は何ですか? –