在我的代码里
out.write(datGroup)
out.write(' '*20+": Space Group\n")
out.write(datLatx +" ")
out.write(datLaty +" ")
out.write(datLatz +" ")
out.write('/'),
out.write(' '*20+": a,b,c,alpha,beta,gamma\n")
输出为:
189 : Space Group
10 11 12 / : a,b,c,alpha,beta,gamma
这对我所做的是正确的,但不是我想要的。你知道吗
我希望“:Spacegroup”和“:a,b,c…”从同一列开始,不考虑其行数据的结束位置,例如:
189 : Space Group
10 11 12 / : a,b,c,alpha,beta,gamma
我能用Python3做吗?你知道吗
根据jonrsharpe的例子编辑 所以我试过:
def write_row(out, data, header, col=20):
out.write("{0}: {1}".format(" ".join(map(str, data)).ljust(col), header))
def print_data(self, BSub):
.....
with open("Init", mode='w') as out:
write_row(out, (datGroup,), "Space Group")
这是一个错误:
$ python3 geninit.py
Traceback (most recent call last):
File "geninit.py", line 109, in print_data
write_row(out, (datGroup,), "Space Group")
NameError: global name 'write_row' is not defined
我将创建一个函数来执行此操作,例如:
然后针对每个案例调用:
例如,这就给了
它使用:
map(str, ...)
将所有data
转换为字符串" ".join(...)
在data
项之间放置空格str.ljust
用空格填充左边的“列”,使其保持相同的宽度;以及str.format
将填充的左列和标题放在": "
周围。你知道吗然后,您可以调整它以写入输出文件(可以作为参数传递),而不是
print
数据,例如:打电话给我
相关问题 更多 >
编程相关推荐