如何在Python中格式化文件中的文本?
我有一个文件,有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 这是我目前掌握的代码。它只读取并打印换行符上的每一行:如何在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 这是我目前掌握的代码。它只读取并打印换行符
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