Hướng dẫn why is python printing an extra line? - tại sao python in thêm một dòng?

Tôi không thể tìm ra lý do tại sao mã số 1 trả về một dòng trống thêm trong khi mã số 2 không. Ai đó có thể giải thích điều này? Sự khác biệt là một dấu phẩy phụ ở cuối mã số 2.

# Code #1
file = open('tasks.txt')

for i, text in enumerate(filer, start=1):
    if i >= 2 and i <= 4:
        print "(%d) %s" % (i, text)

# Code #2
file = open('tasks.txt')

for i, text in enumerate(filer, start=1):
    if i >= 2 and i <= 4:
        print "(%d) %s" % (i, text),

Đây là nội dung của tệp tác vụ của tôi.txt:

line 1
line 2
line 3
line 4
line 5

Kết quả từ mã số 1:

(2) line 2

(3) line 3

(4) line 4

Kết quả từ mã số 2 (kết quả mong muốn):

(2) line 2
(3) line 3
(4) line 4

Hướng dẫn why is python printing an extra line? - tại sao python in thêm một dòng?

người gửi

Phù vàng 141K35 Huy hiệu vàng206 Huy hiệu đồng35 gold badges206 silver badges231 bronze badges

Khi được hỏi ngày 4 tháng 5 năm 2012 lúc 21:21May 4, 2012 at 21:21

Trailing

line 1
line 2
line 3
line 4
line 5
0 trong câu lệnh in sẽ làm bất ngờ một nguồn cấp dữ liệu. Câu lệnh in đầu tiên của bạn không có một câu nói, thứ hai của bạn.

Đầu vào bạn đọc vẫn chứa

line 1
line 2
line 3
line 4
line 5
1 gây ra thêm dòng. Một cách để bù đắp cho nó là ngăn chặn việc in phát hành một dòng của riêng mình bằng cách sử dụng dấu phẩy kéo dài. Ngoài ra, và được cho là một cách tiếp cận tốt hơn, bạn có thể tước dòng mới trong đầu vào khi bạn đọc nó (ví dụ: bằng cách sử dụng
line 1
line 2
line 3
line 4
line 5
2)

Đã trả lời ngày 4 tháng 5 năm 2012 lúc 21:24May 4, 2012 at 21:24

LevonlevonLevon

Huy hiệu vàng 133K3333 gold badges198 silver badges187 bronze badges

3

Câu trả lời chung tốt nhất cho vấn đề này là loại bỏ dòng mới (nếu có!) Ngay khi bạn đọc nó:general answer to this problem is to strip the trailing newline (if any!) as soon as you read it:

f = open('tasks.txt')
for i, text in enumerate(f, start=1):
    text = text.rstrip('\n')
    if i >= 2 and i <= 4:
        print "(%d) %s" % (i, text)

Bằng cách đó, bạn lấy ra đầu ra của mình khỏi đầu vào của mình ... Mã đầu ra của bạn có thể cách xa 20 dòng hoặc trong một hàm/phương thức khác hoặc thậm chí trong một mô -đun khác. Bồi thường cho một dòng mới trong đầu vào bằng cách sử dụng dấu phẩy ở cuối câu lệnh in không phải là một giải pháp mạnh mẽ.

Đã trả lời ngày 4 tháng 5 năm 2012 lúc 21:51May 4, 2012 at 21:51

John Machinjohn MachinJohn Machin

79,8K11 Huy hiệu vàng138 Huy hiệu bạc185 Huy hiệu đồng11 gold badges138 silver badges185 bronze badges

Để không có một dòng trống, bạn cần

line 1
line 2
line 3
line 4
line 5
0 ở cuối câu lệnh in

Example:

for i in range(10):
    print i,

>>>0 1 2 3 4 5 6 7 8 9

for i in range(10):
    print i

>>>
0
1
2
3
4
5
6
7
8
9

Hướng dẫn why is python printing an extra line? - tại sao python in thêm một dòng?

Ben

50.8K36 Huy hiệu vàng126 Huy hiệu bạc145 Huy hiệu đồng36 gold badges126 silver badges145 bronze badges

Đã trả lời ngày 4 tháng 5 năm 2012 lúc 21:30May 4, 2012 at 21:30

Ganlawganlawganlaw

1.2754 huy hiệu vàng18 Huy hiệu bạc32 Huy hiệu đồng4 gold badges18 silver badges32 bronze badges

1

Có một sửa chữa rất đơn giản cho điều này.

Giả sử tôi có, đối với các đối số, một tệp .txt (được gọi là số.txt) mà tôi đang đọc từ các giá trị:

234234

Sau đó, bằng cách sử dụng mã sau:

filename = numbers.txt

with open(filename) as file_object:
    for line in file_object:
        print(line)

Sẽ cung cấp cho bạn dòng trống thêm vì bạn đang gặp vấn đề. Nhưng với một thay đổi nhỏ, bạn có thể loại bỏ các dòng trống thêm bằng phương thức rstrip (). Vì vậy, mã trở thành:

filename = numbers.txt

with open(filename) as file_object:
    for line in file_object:
        print(line.rstrip())

Bây giờ bạn sẽ nhận được kết quả của mình mà không có những đường trống khó chịu giữa chúng!

Đã trả lời ngày 16 tháng 5 năm 2017 lúc 9:35May 16, 2017 at 9:35

Baba.SBaba.SBaba.S

3042 Huy hiệu bạc12 Huy hiệu Đồng2 silver badges12 bronze badges

Lặp lại các tệp giữ cho các dòng mới từ tệp. Vì vậy, có một dòng mới từ bản in của bạn và một từ chuỗi.

Một cách tốt để kiểm tra ngữ nghĩa tệp là với

line 1
line 2
line 3
line 4
line 5
4. Hãy xem:

>>> from StringIO import StringIO
>>> x = StringIO("abc\ncde\n")
>>> for line in x: print repr(line)
... 
'abc\n'
'cde\n'

Dấu phẩy triệt tiêu dòng mới từ bản in, như Levon nói, để chỉ có dòng mới từ chuỗi.

Tôi tước dòng mới từ các chuỗi bằng

line 1
line 2
line 3
line 4
line 5
5. Nó được loại bỏ bất kỳ dòng mới nào ở bất kỳ định dạng hiện đại nào (UNIX, Windows hoặc Old Mac OS). Vì vậy, bạn có thể làm
line 1
line 2
line 3
line 4
line 5
6 thay thế.

Đã trả lời ngày 4 tháng 5 năm 2012 lúc 21:25May 4, 2012 at 21:25

Devin Jeanpierredevin JeanpierreDevin Jeanpierre

Phim huy hiệu vàng 90,5k44 gold badges55 silver badges79 bronze badges

3

Tại sao chức năng in của Python được in trên một dòng mới theo mặc định?

Hàm in là một chức năng quan trọng trong Python, vì nó được sử dụng để chuyển hướng đầu ra đến thiết bị đầu cuối. Đầu ra cũng có thể được chuyển hướng đến một tệp. Chức năng in, theo mặc định, in trên một dòng mới mỗi lần. Điều này là do định nghĩa của in () trong tài liệu Python.

Làm thế nào để in chuỗi mà không cần thêm một dòng mới trong Python?

Nhân vật dòng mới trong Python là \ n. Nó được sử dụng để chỉ ra sự kết thúc của một dòng văn bản. Bạn có thể in các chuỗi mà không cần thêm một dòng mới có kết thúc =, đó là ký tự sẽ được sử dụng để tách các dòng.

Làm thế nào tôi có thể viết các câu lệnh in không thêm một dòng mới?

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. Nhân vật dòng mới trong Python là: một dấu gạch chéo ngược. Chữ n. 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ó: bạn cũng có thể sử dụng ký tự này trong F-Strings:

Nhân vật dòng mới trong Python được sử dụng để làm gì?

Nhân vật dòng mới trong Python là \ n. Nó được sử dụng để chỉ ra sự kết thúc của một dòng văn bản. Bạn có thể in các chuỗi mà không cần thêm một dòng mới có kết thúc =, đó là ký tự sẽ được sử dụng để tách các dòng.

Dòng trống trong Python là gì?

Một đường trống là một đường trống bao gồm các khoảng trắng, không gian tab.

Liệu Python in bao gồm dòng mới?

Trong Python, chức năng in tích hợp được sử dụng để in nội dung vào đầu ra tiêu chuẩn, thường là bảng điều khiển.Theo mặc định, chức năng in thêm một ký tự dòng mới ở cuối nội dung được in, do đó, đầu ra tiếp theo của chương trình xảy ra trên dòng tiếp theo.By default, the print function adds a newline character at the end of the printed content, so the next output by the program occurs on the next line.

Dòng mới trong Python là gì?

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.

Dòng in trong Python là gì?

Hàm python print () có trong dữ liệu python như ints và chuỗi, và in các giá trị đó thành tiêu chuẩn.Để nói rằng tiêu chuẩn là "văn bản" ở đây có nghĩa là một loạt các dòng, trong đó mỗi dòng là một loạt các ký tự với char '\ n' newline đánh dấu phần cuối của mỗi dòng.prints those values to standard out. To say that standard out is "text" here means a series of lines, where each line is a series of chars with a '\n' newline char marking the end of each line.