Thụt lề chuỗi nhiều dòng trong Python
Bạn đang viết một số Python và bạn cần viết ra một chuỗi chứa các dòng mới. Bạn có hai lựa chọn. một chuỗi thông thường có chứa 1 trong đó hoặc một chuỗi ký tự nhiều dòng sử dụng ba dấu ngoặc kép (đó có phải là các dấu ngoặc kép không?), trông như thế này Show
my_string = """This Nhưng bạn có một vấn đề. Điểm trong mã của bạn nơi bạn đặt chuỗi được thụt lề và những khoảng thụt lề đó hiển thị trong chuỗi của bạn, như thế này def get_string(): Có một chức năng tiện dụng trong thư viện tiêu chuẩn cho cái này được gọi là 2. Nó loại bỏ khoảng trắng hàng đầu phổ biến khỏi các dòng trong đầu vào. Vì vậy, bạn đặt nó xung quanh chuỗi của mình, nhưng nó không giúp được gìdef get_string(): Bạn có thể nhận thấy rằng dòng đầu tiên, 3 không có khoảng trắng ở đầu. Bạn có thể thêm khoảng trắng ở đầu theo cách thủ công, nhưng có một cách tốt hơn. nếu dòng đầu tiên của chuỗi thực sự nằm trên dòng tiếp theo (thụt lề) thì sao? Tôi hiếm khi thấy các chuỗi Nhiều dòng được sử dụng trong mã Python bên ngoài các chuỗi tài liệu, nhưng chúng có thể rất hữu ích, đặc biệt khi bạn cần tạo một chuỗi có cấu trúc rất cụ thể, chẳng hạn như đoạn mã, phần trợ giúp để in ra màn hình hoặc nghệ thuật ASCII cho một con rắn. Vấn đề là nó rất xấu, bởi vì thụt đầu dòng thực sự chèn thụt đầu dòng vào chuỗi. Vì vậy, bạn phải làm điều này
Đây chỉ là Python không thể đọc được, không thể đọc được. Khi làm việc trên pydocstyle, tôi phải kiểm tra trình phân tích cú pháp mã Python. Tôi muốn tìm cách cung cấp cho nó một đoạn mã nguồn Python nhỏ trong mỗi bài kiểm tra. Sau khi mày mò, tôi đã tìm thấy một thành ngữ thực sự tiện dụng giúp làm cho các chuỗi nhiều dòng trong Python trông đẹp mắt
Nước sốt bí mật cho điều này là 4. Mô-đun 5 nằm trong thư viện tiêu chuẩn, vì vậy thực sự không có lý do gì để không sử dụng nó. Những gì nó làm là nó "xóa mọi khoảng trắng hàng đầu phổ biến khỏi mọi dòng trong 6". Với 7, chúng ta có thể thụt lề toàn bộ chuỗi nhiều dòng theo phạm vi hiện tại, để nó trông giống như một khối mã PythonicĐể hiểu cách hoạt động của dedent, đây là đoạn trích tương tự như trên, với các khoảng trắng được đánh dấu cho chuỗi nhiều dòng. ________ 48 khoảng trắng sẽ bị xóa và ________ 49 khoảng trắng sẽ không
Dòng đầu tiên có thể gây rắc rối cho chúng ta ở đây, bởi vì mặc dù nó sẽ không gây rối với việc thụt đầu dòng, nhưng nó sẽ chèn một dòng mới vào đầu chuỗi của chúng ta. Vì vậy, chúng tôi sử dụng dấu gạch chéo ngược-ngắt dòng ngay sau khi mở chuỗi, điều này cho phép chúng tôi thực hiện ngắt dòng trong mã nguồn, nhưng không phải trong chính chuỗi đó. Sau đó, dòng đầu tiên cũng được thụt vào, điều này cho phép 7 thực hiện phần còn lại của công việc nặng nhọc. Tôi muốn thụt lề chuỗi nhiều dòng xa hơn phạm vi hiện tại một đoạn để biến nó thành một khối riêng biệt 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
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
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 ________số 8 Trong khi điều này không làm việc
Đ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 3 trong mô-đun 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ỗiHàm 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 3 sẽ làm mất nó cho chúng tôidef get_string():5 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
Hàm 3 đã xóa thụt đầu dòng cho chúng tôiTâm trí dòng mới của bạnLưu ý rằng chuỗi của chúng tôi bắt đầu bằng dấu gạch chéo ngược ( 9)def get_string():9 Dấu gạch chéo ngược đó sẽ loại bỏ ký tự dòng mới bổ sung ( 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 đódef get_string():1 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 def get_string():2 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 3 với phương pháp chuỗi 2 để xử lý các 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Ở đây chúng tôi đang sử dụng phương pháp 2 với chuỗi của chúng tôidef get_string():8 Hàm 3 đang thụt lề một chuỗi bắt đầu bằng ký tự xuống dòng và kết thúc bằng 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 ở 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 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
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 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 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 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 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 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ỗiNế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 3 từ mô-đun 4 của Python |