2017-04-17 10 views
1
>>> import textwrap 
>>> string = "This is a very very very very very long string." 
>>> print textwrap.wrap(string,8) 
>>> print textwrap.fill(string,8) 

出力:[ '文字列' 'これは'、 '非常'、 '非常'、 '非常'、 '非常'、 '非常'、 '長い']textwrap.wrap()&textwrap.fill()はPython 2でどのように動作しますか?

これは

非常に

非常に

非常に

です

非常に

非常に

長い

文字列。

私はtextwrap.wrap()が私にリストを与え、textwrap.fillが私に文字列を与えるという事実を得る。 文書では、「すべての行が最大幅文字であるように、テキスト(文字列)内に単一の段落をラップします」と述べています。

しかし、なぜ8がwidthパラメータとして渡された場合、textwrap.wrap()によって形成されるリストの各要素の長さが8ではないか分かりません。それは時々7,6、などです。

同様に、textwrap.fill()の場合、各行の長さ= 8文字(幅が5として渡された場合は幅が8または5に渡される場合)がわかりません。例のように、その時々、7,6,4など。なぜ幅と正確に同じではないのですか? 最大でも各行の長さは幅文字でなければならないので、withが8として渡された場合、行内にある8文字すべてを使用する前になぜ壊れますか?これは非常に

非常にV

ERYは非常に

VEの

ある

>>> import textwrap 
>>> string = "This is a very very very very very long string." 
>>> print textwrap.fill(string,8) 

OUTPUT:

は、それは以下のようなものになるべきではありません0

ry long

文字列。

私は理解して助けてください。前もって感謝します。

答えて

1

documentationが述べたように:テキスト(文字列)で、単一の段落は、したがって、すべての行が長く、最も 幅文字である

ラップを。出力行のリストを返す。最後には改行なし。 改行。

textwrapは(通常は空白で)単語の区切りで単語を分割し、各文字列は制限を超えていないことを確認します。注:は、の幅がになると、が分割されません。

文字列をセクションに分割するために使用され、各セクションは、可能な限り多くの単語がの幅文字以下であり、いずれの単語も壊さない。

関連する問題