Python 从特定列写入
在我的代码中,我有Python 从特定列写入,python,python-3.x,formatting,Python,Python 3.x,Formatting,在我的代码中,我有 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 :
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
我可以用蟒蛇3吗
根据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
我将创建一个函数来执行此操作,例如:
def print_row(data, header, col=20):
print("{0}: {1}".format(" ".join(map(str, data)).ljust(col), header))
然后针对每种情况调用它:
print_row((datGroup,), "Space Group")
print_row((datLatx, datLaty, datLatz), "a,b,c,alpha,beta,gamma")
例如,这就给了
>>> datGroup = 189
>>> datLatx, datLaty, datLatz = 11, 12, 13
>>> print_row((datGroup,), "Space Group")
189 : Space Group
>>> print_row((datLatx, datLaty, datLatz, "/"), "a,b,c,alpha,beta,gamma")
11 12 13 / : a,b,c,alpha,beta,gamma
它使用:
将所有map(str,…)
转换为字符串李>数据
在“”。连接(…)
项之间放置空格李>数据
用空格填充左侧“列”,保持其宽度不变;及str.ljust
将填充的左列和标题放在str.format
“:”
def write_row(out, data, header, col=20):
out.write(...)
打电话
write_row(out, (datGroup,), "Space Group")
将字符串格式与
'{}一起使用。format
@sshashank124:你能举个小例子吗?@jornsharpe给出了一个很好的例子。这正是我所想的。你应该去看看。谢谢你的详细例子,但是对于一个新手,你能告诉我如何在write
中使用这个吗?@BaRud我在答案的末尾添加了一个骨架函数和示例调用