如何在Python中格式化文件中的文本?

如何在Python中格式化文件中的文本?,python,formatting,Python,Formatting,我有一个文件,有50行(每行上都有一个名字),我想把每行读出来,然后打印出来,但格式是5列,每列10行 它会像这样: xxxxx--xxxxx--xxxxx--xxxxx--xxxxx xxxxx--xxxxx--xxxxx--xxxxx--xxxxx xxxxx--xxxxx--xxxxx--xxxxx--xxxxx xxxxx--xxxxx--xxxxx--xxxxx--xxxxx xxxxx--xxxxx--xxxxx--xxxxx--xxxxx 这是我目前掌握的代码。它只读取并打印换行符

我有一个文件,有50行(每行上都有一个名字),我想把每行读出来,然后打印出来,但格式是5列,每列10行

它会像这样:

xxxxx--xxxxx--xxxxx--xxxxx--xxxxx

xxxxx--xxxxx--xxxxx--xxxxx--xxxxx

xxxxx--xxxxx--xxxxx--xxxxx--xxxxx

xxxxx--xxxxx--xxxxx--xxxxx--xxxxx

xxxxx--xxxxx--xxxxx--xxxxx--xxxxx

这是我目前掌握的代码。它只读取并打印换行符上的每一行:

f = open('file.txt', 'r')
for x in f:
    x = x.lstrip()
    x = x.rstrip()
    x = x.title()
    print x

之所以使用x.lstrip、x.rstip和x.title,是因为文件中的文本格式很奇怪,所以我必须这样做。这是一份作业。谢谢

您可以尝试使用文件类型.dat,然后使用f=loadtxt(“file.dat”) 这将使用已经在文件中创建的列和行将数据放入数组中。您必须稍微编辑一下数据文件,但它肯定会起作用。如果你想做更多的改变你可以使用这样的命令


c=f[:,5],它将创建一个包含1列的新数组,其中包含原始文件第5列中的所有数据?(我可能错误地解释了您需要的内容)您希望在每行新输出中显示文件中的5行,每行用“---”分隔吗


类似的方法可能会奏效:

def print_table(lines, col_num, col_width):
    for line_ix in range(0, len(lines), col_num):
        print ' -- '.join([line.strip().ljust(col_width) for line in lines[line_ix:line_ix+col_num]])

以下内容不适合初学者。认为这只是一个选择(而不是最好的方法)之一。

您可以使用以下答案一次阅读5行:

注意:它期望输入中的
5*m
行正好产生
m
输出行

返回输入行上的迭代器,如下所示

其中
input.txt
是:

a0
b0
c00
d0
e0
a1
b111
c1
d1
e1
a2
b2
c2
d2
e2

输入文件是什么样子的?抱歉,这是我的第一个问题,我不知道如何缩进行。我知道我的代码被忽略了:/编辑问题以添加信息,不要将其放在评论中。该问题应该包含回答该问题所需的所有信息。您可以对字符串调用strip(),而不是同时执行lstrip()和rstrip()。我只需读取一行,然后使用x.split('--')以分隔符'--'分隔每一行,然后剥离每个单独的名称并按需要打印。
#!/usr/bin/env python3
import fileinput

# read 5 lines at a time from stdin or file(s) at the command-line
for row in zip(*[iter(fileinput.input())]*5):
    print(' -- '.join("%-4s" % item.strip() for item in row))
$ python reformat-input.py input.txt
a0   -- b0   -- c00  -- d0   -- e0  
a1   -- b111 -- c1   -- d1   -- e1  
a2   -- b2   -- c2   -- d2   -- e2 
a0
b0
c00
d0
e0
a1
b111
c1
d1
e1
a2
b2
c2
d2
e2