最大で「n」文字の長さの大きな文字列から「プレビュー テキスト」を表示する必要があります。残念ながら、これを処理する既存のモジュールが PyPi に見つかりませんでした。
適切な解決を望みます。以下のクイック&ダーティなソリューションは機能しますが、それほど効率的ではありません-多くの絶え間ない比較。誰かが改善する方法について考えを持っていますか? 正規表現を試しましたが、20分後にあきらめました。
私が思いついた不器用な解決策は、ほとんどのニーズに十分対応できます。これがより迅速かつ簡潔に実行できることはわかっています-そして、その方法を知りたいです.
sample = "This is a sample string and I would like to break it down by words, without exceeding max_chars."
def clean_cut( text , max_chars ):
rval = []
words = text.split(' ')
for word in words:
len_rval = len(' '.join(rval))
if len_rval + 1 + len(word) > max_chars :
break
rval.append(word)
return ' '.join(rval)
for i in ( 15, 16, 17,30,35):
cutdown = clean_cut( sample , i )
print "%s | %s" % ( i , cutdown )
そして出力は正しいです...
15 | This is a
16 | This is a sample
17 | This is a sample
30 | This is a sample string and I
35 | This is a sample string and I would