========================== 2.16 以指定列宽格式化字符串 ========================== ---------- 问题 ---------- 你有一些长字符串,想以指定的列宽将它们重新格式化。 ---------- 解决方案 ---------- 使用 ``textwrap`` 模块来格式化字符串的输出。比如,假如你有下列的长字符串: .. code-block:: python s = "Look into my eyes, look into my eyes, the eyes, the eyes, \ the eyes, not around the eyes, don't look around the eyes, \ look into my eyes, you're under." 下面演示使用 ``textwrap`` 格式化字符串的多种方式: .. code-block:: python >>> import textwrap >>> print(textwrap.fill(s, 70)) Look into my eyes, look into my eyes, the eyes, the eyes, the eyes, not around the eyes, don't look around the eyes, look into my eyes, you're under. >>> print(textwrap.fill(s, 40)) Look into my eyes, look into my eyes, the eyes, the eyes, the eyes, not around the eyes, don't look around the eyes, look into my eyes, you're under. >>> print(textwrap.fill(s, 40, initial_indent=' ')) Look into my eyes, look into my eyes, the eyes, the eyes, the eyes, not around the eyes, don't look around the eyes, look into my eyes, you're under. >>> print(textwrap.fill(s, 40, subsequent_indent=' ')) Look into my eyes, look into my eyes, the eyes, the eyes, the eyes, not around the eyes, don't look around the eyes, look into my eyes, you're under. ---------- 讨论 ---------- ``textwrap`` 模块对于字符串打印是非常有用的,特别是当你希望输出自动匹配终端大小的时候。 你可以使用 ``os.get_terminal_size()`` 方法来获取终端的大小尺寸。比如: .. code-block:: python >>> import os >>> os.get_terminal_size().columns 80 >>> ``fill()`` 方法接受一些其他可选参数来控制tab,语句结尾等。 参阅 `textwrap.TextWrapper文档`_ 获取更多内容。 .. _textwrap.TextWrapper文档: https://docs.python.org/3.6/library/textwrap.html#textwrap.TextWrapper