2012-08-24 34 views
44

Tôi đọc để chặn dòng mới sau câu lệnh in bạn có thể đặt dấu phẩy sau văn bản. Ví dụ here trông giống như Python 2. Làm thế nào nó có thể được thực hiện trong Python 3?Làm thế nào tôi có thể chặn dòng mới sau khi có lệnh in?

Ví dụ:

for item in [1,2,3,4]: 
    print(item, " ") 

Những gì cần phải thay đổi để nó in chúng trên cùng một dòng?

+1

Bạn chỉ có thể làm 'in ('' .join ([str (i) for i in [1, 2, 3, 4]]))' 'in –

+0

(* [1, 2, 3, 4]) 'hoạt động cho trường hợp thông thường khi in chuỗi cách nhau –

Trả lời

82

Câu hỏi đặt ra câu hỏi: "Làm thế nào nó có thể được thực hiện bằng Python 3?"

Sử dụng này xây dựng với Python 3.x:

for item in [1,2,3,4]: 
    print(item, " ", end="") 

này sẽ tạo ra:

1 2 3 4 

Xem thông tin này Python doc để biết thêm thông tin:

Old: print x,   # Trailing comma suppresses newline 
New: print(x, end=" ") # Appends a space instead of a newline 

-

Ngoài:

ngoài ra, print() chức năng cũng cung cấp các tham số sep cho phép một cách rõ từng mục được in nên được tách ra. Ví dụ:

In [21]: print('this','is', 'a', 'test') # default single space between items 
this is a test 

In [22]: print('this','is', 'a', 'test', sep="") # no spaces between items 
thisisatest 

In [22]: print('this','is', 'a', 'test', sep="--*--") # user specified separation 
this--*--is--*--a--*--test 
+1

Hoàn hảo! Vì vậy, end = "" chỉ ghi đè ký tự dòng mới. – Ci3

+0

@ChrisHarris Xem cập nhật với trích dẫn từ tài liệu, vì vậy bạn đang thay thế dòng mới bằng '" "' (chuỗi rỗng) – Levon

+1

Rất hữu ích, cảm ơn! – Ci3

4

in không chuyển từ câu lệnh sang hàm cho đến Python 3.0. Nếu bạn đang sử dụng Python cũ thì bạn có thể ngăn chặn sự xuống dòng với một dấu phẩy đuôi như vậy:

print "Foo %10s bar" % baz, 
+4

Câu hỏi được hỏi cụ thể về cách sử dụng Python 3. –

0

Bởi vì python 3 in() chức năng cho phép chấm dứt = "" định nghĩa, thỏa mãn hầu hết các vấn đề này.

Trong trường hợp của tôi, tôi muốn prettyprint và đã thất vọng rằng mô-đun này không được cập nhật tương tự. Vì vậy, tôi đã làm cho nó làm những gì tôi muốn:

from pprint import PrettyPrinter 

class CommaEndingPrettyPrinter(PrettyPrinter): 
    def pprint(self, object): 
     self._format(object, self._stream, 0, 0, {}, 0) 
     # this is where to tell it what you want instead of the default "\n" 
     self._stream.write(",\n") 

def comma_ending_prettyprint(object, stream=None, indent=1, width=80, depth=None): 
    """Pretty-print a Python object to a stream [default is sys.stdout] with a comma at the end.""" 
    printer = CommaEndingPrettyPrinter(
     stream=stream, indent=indent, width=width, depth=depth) 
    printer.pprint(object) 

Bây giờ, khi tôi làm:

comma_ending_prettyprint(row, stream=outfile) 

tôi nhận được những gì tôi muốn (thay thế những gì bạn muốn - Mileage có thể thay đổi)

3

Mã cho Python 3.6.1

print("This first text and " , end="") 

print("second text will be on the same line") 

print("Unlike this text which will be on a newline") 

Output

>>> 
This first text and second text will be on the same line 
Unlike this text which will be on a newline 
+0

Điều này đã làm rõ cách tham số end = "" sẽ ảnh hưởng đến dòng tiếp theo, nhưng không ảnh hưởng đến thông số sau - cảm ơn! –

Các vấn đề liên quan