我想在输出文件中对齐数字,这是我的代码:
tabfil=sys.argv[1]
n=int(sys.argv[2])
n1=int(sys.argv[3])
n2=int(sys.argv[4])
n3=int(sys.argv[5])
arr=np.genfromtxt(tabfil,usecols=n)
arr1=np.genfromtxt(tabfil,usecols=n1)
arr2=np.genfromtxt(tabfil,usecols=n2)
arr3=np.genfromtxt(tabfil,usecols=n3)
arr=arr-arr1-arr2+arr3
arr2=arr1+arr2-arr3
for i in range(len(arr)):
print(arr[i],' ',arr2[i])
我的输出是:
0.0 0.0
-1.977 6.503
0.788 0.517
0.087 0.034
3.181 2.432
0.794 0.345
-0.395 4.097
-0.044 0.859
1.529 2.47
-0.068 6.334
但是我想要
0.0 0.0
-1.977 6.503
0.788 0.517
0.087 0.034
..... ......
我的错误在哪里?我应该定义一些格式吗?
答案 0 :(得分:0)
您可以使用简单的python格式来实现您的目标。
代替
print(arr[i],' ',arr2[i])
使用类似
print('{:< 6g} {:< 6g}'.format(arr[i], arr2[i]))
有关字符串格式的更多详细信息,您可以在这里查看-https://docs.python.org/2/library/string.html
答案 1 :(得分:0)
我必须假设两个数组的长度必须相同。如果是这种情况,那么您可以找出数组中最大的整数,然后将其与rjust和ljust字符串格式结合使用:
arr = [34,334,343,33456476,58567,575543,3543]
arr2 = [134321,24234,2434,23424,244,23424, 342]
widest_number = 0
for number in arr:
if len(str(number))>widest_number:
widest_number = len(str(number))
for i in range(len(arr)):
print("{} {}".format(str(arr[i]).rjust(widest_number), str(arr2[i]).ljust(widest_number)))
希望这会有所帮助。