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我在答案的末尾添加了一个骨架函数和示例调用