Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

Tôi có một loạt các mã di sản để mã hóa các email thô có chứa nhiều câu lệnh in như

print >>f, "Content-Type: text/plain"

Đây là tất cả tốt và tốt cho email, nhưng chúng tôi hiện đang tận dụng cùng một mã để xuất yêu cầu HTTP. Vấn đề là câu lệnh in Python xuất ra '\n' trong khi HTTP yêu cầu '\r\n'.

Có vẻ như Python (ít nhất là 2.6.4) tạo ra mã byte PRINT_NEWLINE cho một câu lệnh in được thực hiện dưới dạng

ceval.c:1582: err = PyFile_WriteString("\n", w);

Do đó, có vẻ như không có cách nào dễ dàng để ghi đè hành vi dòng mới mặc định của in. Tôi đã xem xét các giải pháp sau

  • Sau khi viết đầu ra chỉ đơn giản là làm một .replace('\n', '\r\n'). Điều này sẽ can thiệp vào các thông báo HTTP sử dụng mã hóa đa điểm.
  • Tạo một trình bao bọc xung quanh đối tượng tệp đích và proxy phương thức .write
  • def write(self, data):
        if data == '\n':
            data = '\r\n'
        return self._file.write(data)
    

  • Viết một biểu thức chính quy dịch
    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    0 thành
    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    1 trong đó
    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    2 có thể là '\n' hoặc '\r\n'.
  • Tôi tin rằng tùy chọn thứ ba sẽ là phù hợp nhất. Sẽ rất thú vị khi nghe cách tiếp cận pythonic của bạn đối với vấn đề sẽ là gì.

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Chào mừng! Nhân vật dòng mới trong Python được sử dụng để đánh dấu phần cuối của một dòng và bắt đầu một dòng mới. Biết cách sử dụng nó là điều cần thiết nếu bạn muốn in đầu ra vào bảng điều khiển và làm việc với các tệp.The new line character in Python is used to mark the end of a line and the beginning of a new line. Knowing how to use it is essential if you want to print output to the console and work with files.

    Trong bài viết này, bạn sẽ học:

    • Làm thế nào để xác định ký tự dòng mới trong Python.
    • Làm thế nào các ký tự dòng mới có thể được sử dụng trong các chuỗi và báo cáo in.
    • Cách bạn có thể viết các câu lệnh in không thêm ký tự dòng mới vào cuối chuỗi.

    Hãy bắt đầu nào! ✨

    🔹 Nhân vật dòng mới

    Nhân vật dòng mới trong Python là:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Nó được làm bằng hai ký tự:

    • Một dấu gạch chéo ngược.
    • Thư
      ceval.c:1582: err = PyFile_WriteString("\n", w);
      
      5.

    Nếu bạn thấy ký tự này trong một chuỗi, điều đó có nghĩa là dòng hiện tại kết thúc tại điểm đó và một dòng mới bắt đầu ngay sau khi nó:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Bạn cũng có thể sử dụng ký tự này trong F-String:f-strings:

    >>> print(f"Hello\nWorld!")

    Nhân vật dòng mới trong các câu lệnh in

    Theo mặc định, các câu lệnh in thêm một ký tự dòng mới "phía sau hậu trường" ở cuối chuỗi.

    Như thế này:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Điều này xảy ra bởi vì, theo tài liệu Python:

    Giá trị mặc định của tham số

    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    6 của hàm
    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    7 tích hợp là
    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    8, do đó, một ký tự dòng mới được thêm vào chuỗi.

    Mẹo: ỨNG DỤNG có nghĩa là "Thêm vào cuối". Append means "add to the end".

    Đây là định nghĩa chức năng:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Lưu ý rằng giá trị của

    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    6 là
    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    8, vì vậy điều này sẽ được thêm vào cuối chuỗi.

    Nếu bạn chỉ sử dụng một câu lệnh in, bạn sẽ không nhận thấy điều này vì chỉ có một dòng sẽ được in:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Nhưng nếu bạn sử dụng một số câu lệnh in hết trong tập lệnh Python:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Đầu ra sẽ được in bằng các dòng riêng biệt vì

    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    8 đã được thêm "phía sau hậu trường" vào cuối mỗi dòng:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Chúng ta có thể thay đổi hành vi mặc định này bằng cách tùy chỉnh giá trị của tham số

    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    6 của hàm
    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    7.

    Nếu chúng ta sử dụng giá trị mặc định trong ví dụ này:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Chúng tôi thấy đầu ra được in thành hai dòng:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Nhưng nếu chúng ta tùy chỉnh giá trị của

    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    6 và đặt nó thành
    def write(self, data):
        if data == '\n':
            data = '\r\n'
        return self._file.write(data)
    
    5

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Một không gian sẽ được thêm vào cuối chuỗi thay vì ký tự dòng mới

    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    8, do đó, đầu ra của hai câu lệnh in sẽ được hiển thị trong cùng một dòng:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Bạn có thể sử dụng điều này để in một chuỗi các giá trị trong một dòng, như trong ví dụ này:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Đầu ra là:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Mẹo: Chúng tôi thêm một câu lệnh có điều kiện để đảm bảo rằng dấu phẩy sẽ không được thêm vào số cuối cùng của chuỗi. We add a conditional statement to make sure that the comma will not be added to the last number of the sequence.

    Tương tự, chúng ta có thể sử dụng điều này để in các giá trị của một điều không thể sử dụng được trong cùng một dòng:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Đầu ra là:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Mẹo: Chúng tôi thêm một câu lệnh có điều kiện để đảm bảo rằng dấu phẩy sẽ không được thêm vào số cuối cùng của chuỗi.

    Tương tự, chúng ta có thể sử dụng điều này để in các giá trị của một điều không thể sử dụng được trong cùng một dòng:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    🔸 ký tự dòng mới trong các tệp

    with open("names.txt", "r") as f:
        print(f.readlines())

    Đầu ra là:

    Hướng dẫn how do you override a new line in python? - làm thế nào để bạn ghi đè một dòng mới trong python?

    Mẹo: Chúng tôi thêm một câu lệnh có điều kiện để đảm bảo rằng dấu phẩy sẽ không được thêm vào số cuối cùng của chuỗi.

    Tương tự, chúng ta có thể sử dụng điều này để in các giá trị của một điều không thể sử dụng được trong cùng một dòng:Notice that only the last line of the file doesn't end with a new line character.

    🔸 ký tự dòng mới trong các tệp

    • Ký tự dòng mới
      ceval.c:1582: err = PyFile_WriteString("\n", w);
      
      8 cũng được tìm thấy trong các tệp, nhưng nó được "ẩn". Khi bạn thấy một dòng mới trong một tệp văn bản, một ký tự dòng mới
      ceval.c:1582: err = PyFile_WriteString("\n", w);
      
      8 đã được chèn.
    • Bạn có thể kiểm tra điều này bằng cách đọc tệp với
      def write(self, data):
          if data == '\n':
              data = '\r\n'
          return self._file.write(data)
      
      9, như thế này:

    Như bạn có thể thấy, ba dòng đầu tiên của tệp văn bản kết thúc với một nhân vật

    ceval.c:1582: err = PyFile_WriteString("\n", w);
    
    8 mới hoạt động "phía sau hậu trường".Now you can work with the new line character in Python.

    Mẹo: Lưu ý rằng chỉ dòng cuối cùng của tệp không kết thúc bằng ký tự dòng mới.



    Tóm tắt

    Làm thế nào để bạn ghi đè một dòng trong Python?

    Tóm tắt: Cách đơn giản nhất để ghi đè lên bản in trước đó thành stdout là đặt ký tự trả về vận chuyển ('\ r') trong câu lệnh in dưới dạng in (chuỗi, end = "\ r"). Điều này trả lại dòng stdout tiếp theo cho đầu dòng mà không cần tiến hành dòng tiếp theo.set the carriage return ( '\r' ) character within the print statement as print(string, end = "\r") . This returns the next stdout line to the beginning of the line without proceeding to the next line.

    Làm thế nào để bạn buộc một dòng mới trong Python?

    Trong Python, ký tự dòng mới \ n, được sử dụng để tạo ra một dòng mới.Khi được chèn vào một chuỗi, tất cả các ký tự sau khi ký tự được thêm vào một dòng mới.Về cơ bản, sự xuất hiện của các \ n, chỉ ra rằng dòng kết thúc ở đây và các ký tự còn lại sẽ được hiển thị trong một dòng mới.the new line character “\n” is used to create a new line. When inserted in a string all the characters after the character are added to a new line. Essentially the occurrence of the “\n” indicates that the line ends here and the remaining characters would be displayed in a new line.

    Làm thế nào để bạn ghi đè một dòng trước trong Python?

    Tiền tố đầu ra của bạn với biểu tượng trả về vận chuyển '\ r' và không kết thúc nó bằng biểu tượng nguồn cấp dữ liệu '\ n'.Điều này sẽ đặt con trỏ ở đầu dòng hiện tại, vì vậy đầu ra sẽ ghi đè lên nội dung trước đó.Pad nó với một số không gian trống để đảm bảo ghi đè. . This will place cursor at the beginning of the current line, so output will overwrite previous its content. Pad it with some trailing blank space to guarantee overwrite.

    Làm thế nào để bạn không tạo ra một dòng mới trong Python?

    Để in mà không có dòng mới trong Python, bạn cần thêm một đối số bổ sung cho chức năng in của mình sẽ cho chương trình biết rằng bạn không muốn chuỗi tiếp theo của mình trên một dòng mới.Đây là một ví dụ: in ("Xin chào!", End = '') in ("Đó là một ngày tuyệt vời.")add an extra argument to your print function that will tell the program that you don't want your next string to be on a new line. Here's an example: print("Hello there!", end = '') print("It is a great day.")