Bản tóm tắt
Nhảy thẳng xuống và nhìn vào các ví dụ 1 và 4 dưới đây.
Câu trả lời đầy đủ:
Tôi vừa mới biết về mô -đun Python import textwrap 3, với chức năng import textwrap 4 thực sự tiện dụng của nó và xem xét nó xuất hiện từ Python 2.7, tôi không thể tin rằng nó không phổ biến hơn!
Sử dụng import textwrap 4 xung quanh chuỗi đa dòng giải quyết tất cả các vấn đề trong câu trả lời trước đây của tôi!
Đây là tài liệu chính thức về nó (nhấn mạnh thêm):
import textwrap 6
Loại bỏ bất kỳ khoảng trắng hàng đầu chung khỏi mọi dòng trong văn bản.
Điều này có thể được sử dụng để tạo các chuỗi được trích xuất ba dòng xếp lên với cạnh trái của màn hình, trong khi vẫn trình bày chúng ở mã nguồn ở dạng thụt lề.
Lưu ý rằng các tab và không gian đều được coi là khoảng trắng, nhưng chúng không bằng nhau: các dòng import textwrap 7 và import textwrap 8 được coi là không có khoảng trắng hàng đầu.
Các dòng chỉ chứa khoảng trắng bị bỏ qua trong đầu vào và được chuẩn hóa thành một ký tự mới duy nhất trong đầu ra.
Ví dụ:
def test(): # end first line with \ to avoid the empty line! s = '''\ hello world ''' print(repr(s)) # prints ' hello\n world\n ' print(repr(dedent(s))) # prints 'hello\n world\n'
Cho tất cả các ví dụ
import textwrapví dụ 1
Vì vậy, thay vì điều này, vì câu trả lời được phát hành nhiều nhất (điều này mất đi sự tốt đẹp, sạch sẽ, thụt lề):instead of this, as the most-upvoted answer states (this loses the nice, clean, indentation):
cmd = '''line {0} line {1} line {2}'''.format(1,2,3) print(cmd)Làm điều này (và giữ cho tốt đẹp, sạch sẽ, thụt lề)! (and KEEP the nice, clean, indentation)!
import textwrap cmd = textwrap.dedent('''\ line {0} line {1} line {2}''').format(1,2,3) print(cmd)Hoặc, sử dụng chuỗi định dạng "F" mới được cải tiến của Python3 thay vì phương pháp import textwrap 9 !:
import textwrap var0 = 1 var1 = 2 var2 = 3 cmd = textwrap.dedent(f'''\ line {var0} line {var1} line {var2}''') print(cmd)Ví dụ 2
Nếu bạn có nhiều đối số cho hàm cmd = '''line {0} line {1} line {2}'''.format(1,2,3) print(cmd) 0, bạn có thể đặt chúng trên nhiều dòng nếu muốn. Lưu ý rằng các đối số cmd = '''line {0} line {1} line {2}'''.format(1,2,3) print(cmd) 0 chiếm hai dòng ở đây:
cmd = textwrap.dedent('''\ line {0} line {1} line {2} line {3} line {4} line {5} line {6} line {7} line {8} line {9} line {10} line {11} line {12} line {13} line {14} line {15} line {16} line {17} line {18} line {19}''').format( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ) print(cmd)Và tất nhiên, nếu các đối số cmd = '''line {0} line {1} line {2}'''.format(1,2,3) print(cmd) 0 thực sự dài, bạn cũng có thể đặt mỗi đối số trên dòng riêng của nó:
cmd = textwrap.dedent('''\ line {0} line {1} line {2} line {3} line {4} line {5} line {6} line {7} line {8} line {9} line {10} line {11} line {12} line {13} line {14} line {15} line {16} line {17} line {18} line {19}''').format( 100000000000000000000000000000000000000000000000000000000000000000001, 100000000000000000000000000000000000000000000000000000000000000000002, 100000000000000000000000000000000000000000000000000000000000000000003, 100000000000000000000000000000000000000000000000000000000000000000004, 100000000000000000000000000000000000000000000000000000000000000000005, 100000000000000000000000000000000000000000000000000000000000000000006, 100000000000000000000000000000000000000000000000000000000000000000007, 100000000000000000000000000000000000000000000000000000000000000000008, 100000000000000000000000000000000000000000000000000000000000000000009, 100000000000000000000000000000000000000000000000000000000000000000010, 100000000000000000000000000000000000000000000000000000000000000000011, 100000000000000000000000000000000000000000000000000000000000000000012, 100000000000000000000000000000000000000000000000000000000000000000013, 100000000000000000000000000000000000000000000000000000000000000000014, 100000000000000000000000000000000000000000000000000000000000000000015, 100000000000000000000000000000000000000000000000000000000000000000016, 100000000000000000000000000000000000000000000000000000000000000000017, 100000000000000000000000000000000000000000000000000000000000000000018, 100000000000000000000000000000000000000000000000000000000000000000019, 100000000000000000000000000000000000000000000000000000000000000000020, ) print(cmd)Ví dụ 3
Và thay vì điều này, như tôi đã nói trong câu trả lời ban đầu của mình (điều này giữ cho vết lõm đẹp nhưng có một chút tẻ nhạt để sử dụng):instead of this, as I stated in my original answer (which keeps nice-looking indentation but is a bit tedious to use):
print("\n\n" + "########################\n" + "PRINT DOCSTRING DEMO:\n" + "########################")... Bây giờ bạn có thể làm điều này!-cho phép các chuỗi đa dòng của tôi, khi được in, để "xếp hàng với cạnh trái của màn hình, trong khi vẫn trình bày chúng trong mã nguồn ở dạng thụt đầu dòng" (xem tài liệu chính thức ):do this!--which allows my multi-line strings, when printed, to "line up with the left edge of the display, while still presenting them in the source code in indented form" (see official documentation):
# Note: use the `\` below to prevent the implicit newline right after it from being printed. print(textwrap.dedent(""" ######################## PRINT DOCSTRING DEMO: ########################\ """))Ví dụ 4
Và thay vì điều này, có một số sự thiếu bình thường trông xấu xí ngay giữa nó:instead of this, which has some ugly-looking lack-of-indentation right in the middle of it:
def printDocstrings1(): """ Print all document strings for this module, then exit. Params: NA Returns: NA """ # A LITTLE BIT UGLY, BUT IT WORKS. print(""" --------------------- Module Documentation: --------------------- printDocstrings:{} myFunc1:{} class Math:{} __init__:{} add:{} subtract:{}""".format( printDocstrings1.__doc__, myFunc1.__doc__, Math.__doc__, Math.__init__.__doc__, Math.add.__doc__, Math.subtract.__doc__))... Làm điều này, sử dụng import textwrap 4 để giữ vết lõm đẹp trong suốt!:do this, which uses import textwrap 4 to keep nice-looking indentation all throughout!:
import textwrap 0Chạy mã trên
Bạn có thể chạy mã kiểm tra của tôi ở trên trong repo ERCAGUY_HELLO_WORLD của tôi tại đây: TextWrap_Practice_1.py.
Lệnh chạy:
import textwrap 1OR:
import textwrap 2