3

1000 文字の長いテキスト文字列があり、単語全体を分割せずに、このテキストを 100 文字未満のチャンクに分割したい (99 文字は問題ありませんが、100 文字ではありません)。折り返し/分割は、空白でのみ行う必要があります。

例:

text = "... this is a test , and so on..."
                              ^
                  #position: 100

次のように分割する必要があります。

newlist = ['... this is a test ,', ' and so on...', ...]

newlist適切に分割されたテキストのリストを読み取り可能な (ワードトリミングされていない) チャンクに取得したいと考えています。これをどのように行いますか?

4

3 に答える 3

3

textwrapモジュールを使用できます。

In [2]: import textwrap

In [3]: textwrap.wrap("""Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
   ...: tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
   ...: quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
   ...: consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
   ...: cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
   ...: proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
        """, 40)
Out[3]: 
['Lorem ipsum dolor sit amet, consectetur',
 'adipisicing elit, sed do eiusmod tempor',
 'incididunt ut labore et dolore magna',
 'aliqua. Ut enim ad minim veniam, quis',
 'nostrud exercitation ullamco laboris',
 'nisi ut aliquip ex ea commodo consequat.',
 'Duis aute irure dolor in reprehenderit',
 'in voluptate velit esse cillum dolore eu',
 'fugiat nulla pariatur. Excepteur sint',
 'occaecat cupidatat non proident, sunt in',
 'culpa qui officia deserunt mollit anim',
 'id est laborum.']
于 2013-10-18T19:31:24.153 に答える
3

textwrapモジュールのwrap関数を使用します。次の例では、行を 10 文字幅で分割しています。

In [1]: import textwrap

In [2]: textwrap.wrap("... this is a test , and so on...", 10)
Out[2]: ['... this', 'is a test', ', and so', 'on...']
于 2013-10-18T19:31:30.223 に答える
0

他の人が言ったようにワードラップしますが、代替オプションの場合:

def splitter(s, n):
    for start in range(0, len(s), n):
        yield s[start:start+n]

data = "abcdefghijabcdefghijabcdefghijabcdefghijabcdefghij"
for splitee in splitter(data, 10):
    print splitee
于 2013-10-18T19:34:55.297 に答える