2013-09-24 27 views
0

列範圍我寫了一個Python程序,我得到的輸出喜歡這個如何定義在Python

ATOM   OW HOH    6.016 23.68 63.478   
ATOM   OW HOH    11.522 24.153 61.585 
ATOM   OW HOH    10.849 26.167 62.012 
ATOM   OW HOH    6.774 23.656 63.543 
ATOM   OW HOH    8.255 22.341 66.519 
ATOM   OW HOH    8.891 23.732 67.313 
ATOM   OW HOH    9.193 25.411 67.03 
ATOM   OW HOH    8.208 25.255 67.332 

,但我想輸出像

ATOM   OW HOH    6.016 23.68 63.478   
ATOM   OW HOH    11.522 24.153 61.585 
ATOM   OW HOH    10.849 26.167 62.012 
ATOM   OW HOH    6.774 23.656 63.543 
ATOM   OW HOH    8.255 22.341 66.519 
ATOM   OW HOH    8.891 23.732 67.313 
ATOM   OW HOH    9.193 25.411 67.03 
ATOM   OW HOH    8.208 25.255 67.332 

任何幫助是明顯的。

outfile2 = open('randomcoord.pdb', 'w') 
hetam = 'ATOM   OW HOH   ' + ' ' + str(round(pacord[0], 3)) + ' ' + str(round(pacord[1], 3)) + ' ' + str(round(pacord[2], 3)) 

      outfile2.write(hetam) 

      outfile2.write('\n') 
outfile2.close() 
+0

他們是否有他們之間的空間,或者是標籤好嗎?用'\ t'打印怎麼樣? –

+1

粘貼用於打印的代碼。 –

+0

他們有空間 – awanit

回答

1

定義你想要的字符串的長度,比方說它是6(點之前的兩個地方,三個之後,和點本身)。

N = 6 

然後,而不是印刷爲你做什麼,寫:

str(round(pacord[0], 3)).rjust(N,' ') 
3

使用%格式化操作,讓它同時執行舍入和填充:

with open('randomcoord.pdb', 'w') as f: 
    f.write('ATOM   OW HOH    %6.3f %6.3f %6.3f\n' 
      % (pacord[0], pacord[1], pacord[2])) 
+0

謝謝。 我可以插入計數HOH號碼。 像HOH 1,HOH 2 ..... HOH 10 – awanit

+0

我可以給浮空參數之間的兩個空格嗎? – awanit

+0

@awanit你可以將格式字符串更改爲任何你想要的,所以如果你想要另一個空間,只需將它插入格式字符串。要添加一個計數,只需使用'HOH%d'並將計數器添加到參數元組中。有關更多詳細信息,請參見[手冊](http://docs.python.org/2/library/stdtypes.html#string-formatting)。 – user4815162342

1

像user4815162342的但與現代格式工具:

hetam = 'ATOM   OW HOH   {:6.3f} {:6.3f} {:6.3f}\n'.format(*pacord) 

請注意,如果你正在寫到一個文件我建議使用print

with open('randomcoord.pdb', 'w') as outfile2: 
    print('ATOM   OW HOH   {:6.3f} {:6.3f} {:6.3f}'.format(*pacord), file=outfile2)