这是我的代码的底端。其余的并不重要,我只是在格式化方面遇到了麻烦。 df和ph中的i值基本上是一堆带有值的行。我需要" \ n"在循环中,因为我希望循环中的所有数据都打印在新行上。
我的问题是:我写的文件包含来自" df"的数据。打印在" ph"的数据下面。我希望他们在同一条线上。我想过要添加来自" ph"的数据。到了#34; df"的开始将两者结合起来但我觉得有一种更简单的方法可以做到这一点。
titration_curves = open('titration_curves.dat', 'w')
for i in residues:
titration_curves.write("%s " % i)
titration_curves.write("\n")
for ph in ph_set:
for i in ph:
titration_curves.write("%s " % i)
titration_curves.write("\n")
for df in dfs:
for i in df:
titration_curves.write("%s " % i)
titration_curves.write("\n")
我的输出文件如下所示:
2.0
2.5
3.0
0.008 0.000 0.587 0.000 0.952 0.509 0.966 0.661 0.012 0.291
0.065 0.000 0.517 0.000 0.848 1.000 0.938 0.939 0.034 0.226
0.262 0.000 0.882 0.008 0.991 0.901 1.000 0.963 0.071 0.751
我希望它看起来像:
2.0 0.008 0.000 0.587 0.000 0.952 0.509 0.966 0.661 0.012 0.291
2.5 0.065 0.000 0.517 0.000 0.848 1.000 0.938 0.939 0.034 0.226
3.0 0.262 0.000 0.882 0.008 0.991 0.901 1.000 0.963 0.071 0.751
答案 0 :(得分:1)
你可以使用python zip
方法在一个for循环中执行它:
for i,ph,df in zip(residues,ph_set,dfs):
titration_curves.write("%s " % i)
for j in ph:
titration_curves.write("%s " % j)
for j in df:
titration_curves.write("%s " % j)
titration_curves.write("\n")
答案 1 :(得分:0)
要将它们放在同一行,您需要删除换行符\n
,并让您想要在同一行上的值共享相同的for
循环。
答案 2 :(得分:0)
如果ph和df中的值相等,则使用zip(),例如:
for ph_value, df_value in zip(ph, df):
titration_curves.write('%s %s\n' % (ph_value, df_value))
答案 3 :(得分:0)
假设:
>>> residues
['2.0', '0.008', '0.000', '0.587', '0.000', '0.952', '0.509', '0.966', '0.661', '0.012', '0.291']
>>> ph_set
['2.5', '0.065', '0.000', '0.517', '0.000', '0.848', '1.000', '0.938', '0.939', '0.034', '0.226']
>>> dfs
['3.0', '0.262', '0.000', '0.882', '0.008', '0.991', '0.901', '1.000', '0.963', '0.071', '0.751']
您可以使用join
:
>>> print '\n'.join([' '.join(e) for e in (residues, ph_set, dfs)])
2.0 0.008 0.000 0.587 0.000 0.952 0.509 0.966 0.661 0.012 0.291
2.5 0.065 0.000 0.517 0.000 0.848 1.000 0.938 0.939 0.034 0.226
3.0 0.262 0.000 0.882 0.008 0.991 0.901 1.000 0.963 0.071 0.751