格式化CSV数据的输出?

时间:2017-02-04 21:26:44

标签: python format

我是python的新手,并制作了具有此输出的内容: (该文本位于csv文件中,所以: 1,A 2,B 3,C等)

Number        Letter

1             A
2             B
3             C
26            Z

不幸的是,我花了很多时间使用一种复杂的方法来制作它,我手动制作这样的空格: 更新了代码

fx = int(input('Number?\n'))
f=open('nums.txt','r')
lines=f.readlines()
line = lines[fx - 1]
with open('nums.txt','r') as f:
    for i, line in enumerate(f):
        if i >= 5: 
            break
        NUM, LTR, SMB = line.rsplit(',', 1)
        print(NUM.ljust(13) + LTR.ljust(13) + SMB)

如何制作3列?现在它出现了

ValueError: not enough values to unpack (expected 3, got 2) 

所以有一种更简单的实现方法,不会像这样移动字符串:

Number        Letter

1             A
2             B
3             C
26             Z #< string moves with spaces.

2 个答案:

答案 0 :(得分:2)

对于简单对齐,您可以使用ljustrjust。您也无需为要处理的每一行读取整个文件:

with open('numberletter','r') as f:
    for i, line in enumerate(f):
        if i >= 5: 
            break
        number, letter = line.rsplit(',', 1)
        print(number.ljust(13) + letter)

要获得更复杂的输出格式,请查看str.format()formatting syntax

答案 1 :(得分:-1)

您可以使用sys模块。

import sys
a=[1,"A"]
sys.stdout.write("%-6s %-50s " % (a[0],a[1]))