テキストのブロックから最後の単語をスライスする最良の方法は何ですか?
私は考えることができます
私は現在アプローチ1を取っていますが、リストを連結する方法がわかりません...
content = content[position-1:position+249] # Content
words = string.split(content, ' ')
words = words[len[words] -1] # Cut of the last Word
コード例は大歓迎です。
実際、すべての単語を分割する必要はありません。 rsplit を使用して、テキストを最後のスペース記号で2つの部分に分割できます。
いくつかの例:
>>> text = 'Python: Cut of the last Word of a sentence?'
>>> text.rsplit(' ', 1)[0]
'Python: Cut of the last Word of a'
rsplit
は「逆分割」の省略形であり、通常のsplit
とは異なり、文字列の末尾から機能します。 2番目のパラメーターは、作成する分割の最大数です。 1
の値は、結果として2要素リストを提供します(1つの分割が行われ、2つの入力文字列が生成されたため)。
正規表現にはより多くの複雑さと不要なオーバーヘッドがあるため、間違いなく分割してから最後のWordを削除する必要があります。より多くのPythonicコードを使用できます(コンテンツが文字列であると仮定):
' '.join(content.split(' ')[:-1])
これにより、コンテンツが単語に分割され、最後の単語を除くすべての単語が使用され、単語がスペースで再結合されます。
コンパクトさが好きなら:
' '.join(content.split(' ')[:-1]) + ' ...'
現在のメソッドを保持する場合は、' '.join(words)
を使用してリストを連結します。
リストのスライスを使用するには、words = words[len[words -1]
をwords = words[:-1]
に置き換えることもできます。
OR
import re
print ' '.join(re.findall(r'\b\w+\b', text)[:-1])
' '.join(words)
はリストを元に戻します。
スペースの最後のインデックスを取得し、文字列を接合します
>>> text = 'Python: Cut of the last Word of a sentence?'
>>> text[:text.rfind(' ')]
'Python: Cut of the last Word of a'