Python 格式化CSV数据的输出?

Python 格式化CSV数据的输出?,python,format,Python,Format,我是python新手,制作了一些具有以下输出的东西: 文本位于csv文件中,因此: 1、A 2,B 3、C等 不幸的是,我花了大量时间使用一种复杂的方法来创建它,在这种方法中,我手动创建了如下空间: 更新代码rn 我如何让它成为3列?现在它提出了一个 ValueError: not enough values to unpack (expected 3, got 2) 那么,有没有一种更简单的方法来实现这一点,而不是像这样移动字符串: Number Letter 1

我是python新手,制作了一些具有以下输出的东西: 文本位于csv文件中,因此: 1、A 2,B 3、C等

不幸的是,我花了大量时间使用一种复杂的方法来创建它,在这种方法中,我手动创建了如下空间: 更新代码rn

我如何让它成为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.

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

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)
有关更复杂的输出格式,请参阅和,您可以使用sys模块进行设置

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

使用格式…如果您要查找固定宽度的列,是否只需要{:如果我想有3列,例如:数字字母SYMBOL,你也可以对第二列应用L。或者更好,在每一列上都使用rjust。无论如何,在大多数情况下,右对齐看起来更好;-那么它只是NUM,LTR,SMB=line.rsplit',,1吗printNUM.ljust13+LTR.ljust13+SMB是的,但是NUM,LTR,SMB=line.rsplit',',,2,因为您现在需要两个拆分…您知道如何在文件中添加字符串吗?现在每次我尝试这样做时:“printNUM.ljust13+LTR.ljust13+SMB+”test“字符串移动到第一个ch输出的字符如下:test 26 z而不是26 test z这与sys有什么关系?除了您碰巧能够写入sys.stdout之外?这与sys和所有不推荐的字符串格式运算符%无关。@L3viathan我认为他把sys放在那里是因为打印函数保持不变在每次输出后打印新行,并且我请求的输出没有换行。@Yaya prints,end=可以轻松完成相同的操作。如果没有换行,请在打印调用中添加end=参数。
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)
import sys
a=[1,"A"]
sys.stdout.write("%-6s %-50s " % (a[0],a[1]))