2012-08-07 70 views
3

我使用python 2.6並閱讀了很多關於從'print'中刪除新行的鏈接,但找不到使用模數標誌(%)格式化的用法示例。在我的計劃,我想在計算數據的環行寫的,但每一行數據來自不同的計算:python 2.6 print with formatting(%):remove newline

 
while loop 
    ... calulating value1 and value2 
    print ('%10d %10s') % (value1, value2) [1] 
    ... calulating value3 and value4 
    print ('%7s %15d') % (value3, value4) [2] 
    print #this is where newline should come from 

所以我想獲得:

 
value1 value2 value3 value4 
value5 value6 value7 value8 
... 

基本上這個方法可以使可讀性我的計劃(每個真實行有超過20個計算位置)。相反的方式是將所有數據連接成一個長串,但可讀性可能會丟失。
是否可以像[1]和[2]中那樣使用「print()%()」語法來刪除換行符?

+1

請問你剛找到一份工作的方法,如果你使用[str.format(http://docs.python.org/library/stdtypes.html#str.format)而不是舊式%格式?我知道至少會有逗號,儘管我懷疑這會使用%格式。 (儘管如此,你仍然應該使用str.format) – Josiah 2012-08-07 09:46:16

回答

6

如果在聲明的末尾添加一個逗號(,),換行符將被省略:

print ('%10d %10s') % (value1, value2), 

http://docs.python.org/reference/simple_stmts.html#print

一個'\n'字符在年底寫的,除非print聲明以逗號結尾。如果聲明僅包含關鍵字print,這是唯一的行動。

+0

要添加','不能在Python3中工作。 http://stackoverflow.com/questions/493386/how-to-print-in-python-without-newline-or-space# – Stallman 2015-09-20 12:34:10

1
while loop 
    ... calulating value1 and value2 
    print '%10d %10s') % (value1, value2) , 
    ... calulating value3 and value4 
    print ('%7s %15d') % (value3, value4) , 
    print #this is where newline should come from 

,prints

+0

我新的關於逗號,但試圖添加它)和%,謝謝:-) – przemol 2012-08-07 09:54:10

+0

您也可以使用'sys.stdout.write'來代替打印。在這種情況下,你只會寫出你寫的那些字符 – 2012-08-07 10:38:25

0

的唯一方式結束做到這一點,而無需使用print小號後面的逗號(或與PY 3/from __future__ import print_function,該end關鍵字參數),那麼你必須立即執行所有打印 - 例如:

while ...: 
    # calulating value1 and value2 
    # calulating value3 and value4 
    print '%10d %10s %7s %15d' % (value1, value2, value3, value4) 

如果這使可讀性成爲問題,請考慮將計算邏輯置於f unctions這樣就可以做到:

while ...: 
    value1 = calculate_value1() 
    value2 = calculate_value2() 
    value3 = calculate_value3() 
    value4 = calculate_value4() 
    print '%10d %10s %7s %15d' % (value1, value2, value3, value4)