2017/09/28

Python Tips:Python で文字列を切り詰めたい

Python で文字列を切り詰める方法についてご紹介します。

いろんな方法があるように思いますが、今回はその中で次の 2 つの方法をご紹介してみます。

  • A. スライスで切り詰める
  • B. テンプレートに埋め込むときに切り詰める


A. スライスで切り詰める


こちらは文字列のスライスを使って切り詰める方法です。こちらはシンプルですね。

s1 = '露と落ち 露と消えにし 我が身かな 浪速のことは 夢のまた夢'
s1_truncated = s1[:10]

print(s1_truncated)
# => 露と落ち 露と消えに

関数化するなら例えば次のような形になるでしょうか。

def truncate(string, length, ellipsis='...'):
    '''文字列を切り詰める

    string: 対象の文字列
    length: 切り詰め後の長さ
    ellipsis: 省略記号
    '''
    return string[:length] + (ellipsis if string[length:] else '')

print(truncate('露と落ち 露と消えにし 我が身かな 浪速のことは 夢のまた夢', 10))
# => 露と落ち 露と消えに...
print(truncate('朝ぼらけ', 10))
# => 朝ぼらけ
# => 


B. テンプレートに埋め込むときに切り詰める


こちらは文字列型の format() メソッドの機能を使った方法です。

s2 = '嬉しやと 二度さめて一眠り うき世の夢は 暁の空'

print('{:.10}'.format(s2))
# => 嬉しやと 二度さめて

{} の中で : の後に .数字 という形で書くと文字数を指定することができます。この例では文字を最大 10 文字になるように切り詰めています。

この {:.10} という形は元々、小数点数の小数点以下の桁数を指定するためのものだと思うのですが、数字以外の場合にも動作して、数字以外の場合は文字数を指定できるものになっているようです。

公式のドキュメントでは次のように説明されています。

The precision is a decimal number indicating how many digits should be displayed after the decimal point for a floating point value formatted with 'f' and 'F', or before and after the decimal point for a floating point value formatted with 'g' or 'G'. For non-number types the field indicates the maximum field size - in other words, how many characters will be used from the field content. The precision is not allowed for integer values.

6.1. string — Common string operations — Python documentation

以上です。


参考

How to truncate a string using str.format in Python? - Stack Overflow

0 件のコメント: