Ví dụ về mã hóa python

Hãy nói về cách tạo một chuỗi nhiều dòng trong Python mà không vô tình thụt lề văn bản trong chuỗi đó

Xóa chuỗi nhiều dòng theo cách thủ công

Ở đây chúng tôi có một chức năng in ra tuyên bố bản quyền

def copyright[]:
    print["""\
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved."""
    ]

Chức năng này hoạt động, nhưng tuyên bố bản quyền mà nó in ra bị thụt vào

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.

Mỗi dòng trong tuyên bố bản quyền này bắt đầu bằng tám khoảng trắng. Điều này xảy ra bởi vì trong mã của chúng tôi, văn bản trong chuỗi của chúng tôi bắt đầu bằng tám khoảng trắng trước mỗi dòng

Chúng tôi có thể khắc phục sự cố này bằng cách xóa thủ công văn bản trong chuỗi này

def copyright[]:
    print["""\
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.

Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved."""
    ]

Trong khi điều này không làm việc

>>> copyright[]
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.

Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved.

Điều này cũng làm cho mã của chúng tôi hơi khó đọc

Mã của chúng tôi khó đọc hơn trước vì ở đây, mã của chúng tôi đột nhiên bị lõm ở giữa chuỗi của chúng tôi

Chúng tôi có thể khắc phục sự cố này bằng cách sử dụng hàm

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 trong mô-đun
>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
4 của Python

Sử dụng
>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
5 để bỏ thụt lề chuỗi

Hàm

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 cho phép chúng tôi thụt lề mã theo bất kỳ cách nào chúng tôi muốn

Chuỗi nhiều dòng của chúng tôi có thể được thụt lề độc đáo trong mã của chúng tôi vì hàm

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 sẽ làm mất nó cho chúng tôi

from textwrap import dedent

def copyright[]:
    print[dedent["""\
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved."""
    ]]

Tại thời điểm chúng ta sử dụng chuỗi này, chúng ta sẽ thấy rằng nó không có bất kỳ vết lõm nào

>>> copyright[]
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.

Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved.

Hàm

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 đã xóa thụt đầu dòng cho chúng tôi

Tâm trí dòng mới của bạn

Lưu ý rằng chuỗi của chúng tôi bắt đầu bằng dấu gạch chéo ngược [_______1_______9]

from textwrap import dedent

def copyright[]:
    print[dedent["""\
        ...
    ]]

Dấu gạch chéo ngược đó sẽ loại bỏ ký tự dòng mới bổ sung [

def copyright[]:
    print["""\
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.

Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved."""
    ]
0] mà chuỗi này sẽ bắt đầu bằng nếu dấu gạch chéo ngược này không có ở đây. Nếu không có dấu gạch chéo ngược đó, chúng ta sẽ cần bắt đầu văn bản của mình trên cùng một dòng để tránh ký tự xuống dòng đó

from textwrap import dedent

def copyright[]:
    print[dedent["""Copyright [c] 1991-2000 ACME Corp
        ...

Lưu ý rằng chúng tôi cũng đang kết thúc chuỗi nhiều dòng của mình trên cùng một dòng mà văn bản của chúng tôi kết thúc

from textwrap import dedent

def copyright[]:
    print[dedent["""\
        ...
        All Rights Reserved."""
    ]]

Thay vào đó, sẽ thật tuyệt nếu chúng ta có thể kết thúc nó ở dòng tiếp theo, nhưng điều đó sẽ thêm một dòng mới vào cuối chuỗi của chúng ta

Tôi thích kết hợp

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 với để chăm sóc những dòng mới này

Kết hợp
>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 với
def copyright[]:
    print["""\
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.

Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved."""
    ]
2 để làm cho mã dễ đọc hơn

Ở đây chúng tôi đang sử dụng phương pháp

def copyright[]:
    print["""\
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.

Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved."""
    ]
2 với chuỗi của chúng tôi

from textwrap import dedent

def copyright[]:
    print[dedent["""
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
    """].strip["\n"]]

Hàm

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 đang thụt lề một chuỗi bắt đầu bằng một ký tự xuống dòng và kết thúc bằng một ký tự xuống dòng [lưu ý rằng chúng ta kết thúc chuỗi nhiều dòng của mình trên dòng tiếp theo]. Sau khi chúng tôi dedent, sau đó chúng tôi sử dụng phương thức chuỗi
def copyright[]:
    print["""\
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.

Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved."""
    ]
2 để xóa các ký tự xuống dòng đó

Tuyên bố bản quyền của chúng tôi có vẻ đúng như vậy

>>> copyright[]
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.

Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved.

Và chúng tôi có mã thụt vào độc đáo không có dấu gạch chéo ngược lạ. Thêm vào đó, chúng ta không cần phải lo lắng về vị trí chính xác chuỗi nhiều dòng kết thúc trong mã của chúng ta. chúng tôi đang kết thúc chuỗi của mình trên dòng mới và điều đó không sao cả

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 duy trì mức thụt đầu dòng tương đối

Điều quan trọng cần lưu ý là hàm

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 không xóa tất cả khoảng trắng ở đầu mỗi dòng. Nó thông minh hơn một chút. Hàm
>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 duy trì thụt lề tương đối trong một chuỗi

Ở đây chúng tôi có một chuỗi dự kiến ​​​​sẽ có một số dòng thụt vào nhiều hơn những dòng khác

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
1

Bạn có thể thấy rằng mỗi dòng có ít nhất bốn khoảng cách thụt lề, nhưng một số dòng có nhiều khoảng cách thụt lề hơn

Khi chúng tôi chạy

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 đối với chuỗi này, bạn sẽ thấy bốn khoảng cách thụt đầu dòng [phổ biến cho mỗi dòng] bị xóa

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
2

Nhưng vết lõm mà một số dòng có [tương đối lớn hơn các dòng khác] được duy trì

Sử dụng
>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
5 để bỏ thụt lề chuỗi

Nếu bạn muốn định dạng độc đáo chuỗi nhiều dòng của mình trong mã Python mà không in nhầm văn bản thụt lề, bạn có thể sử dụng hàm

>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
3 từ mô-đun
>>> copyright[]
        Copyright [c] 1991-2000 ACME Corp
        All Rights Reserved.

        Copyright [c] 2000-2030 Cyberdyne
        All Rights Reserved.
4 của Python

Chủ Đề