如何在Python的列中对齐数字

时间:2019-08-16 13:11:54

标签: python arrays formatting

我想在输出文件中对齐数字,这是我的代码:

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
 .....      ......

我的错误在哪里?我应该定义一些格式吗?

2 个答案:

答案 0 :(得分:0)

您可以使用简单的python格式来实现您的目标。

代替

print(arr[i],' ',arr2[i])

使用类似

print('{:< 6g} {:< 6g}'.format(arr[i], arr2[i]))

有关字符串格式的更多详细信息,您可以在这里查看-https://docs.python.org/2/library/string.html

或此处-https://pyformat.info/#number

答案 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)))

希望这会有所帮助。

相关问题