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 PythonSử 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
>>> 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 cho phép chúng tôi thụt lề mã theo bất kỳ cách nào chúng tôi muốnChuỗ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ôifrom 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ôiTâ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àyKế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
>>> copyright[]
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.
Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved.
def copyright[]:
print["""\
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.
Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved."""
]
Ở đâ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ôifrom 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
>>> copyright[]
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.
Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved.
Đ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.
1Bạ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.
2Như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
>>> copyright[]
Copyright [c] 1991-2000 ACME Corp
All Rights Reserved.
Copyright [c] 2000-2030 Cyberdyne
All Rights Reserved.
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