如何在python中定义列范围

2024-09-30 20:19:27 发布

您现在位置: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()

Tags: 程序closeopenpdbwriteatomstrround
3条回答

定义所需字符串的长度,假设为6(点前两处,点后三处,点本身)。你知道吗

N = 6

然后,不要像以前那样打印,而是写:

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

与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)

使用%格式化操作符,让它执行舍入和填充操作:

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]))

相关问题 更多 >