繁体   English   中英

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

[英]How do I format text from a file in 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

这是我到目前为止的代码。 它只是读取并在换行符上打印每行:

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的原因是因为文本在文件中的格式很奇怪,所以我必须这样做。 这是一项任务。 谢谢!

这样的事情可能会起作用:

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]])

您可以尝试使用文件类型.dat,然后使用f = loadtxt(“ file.dat”),这将使用已在文件中创建的列和行将数据放入数组。 您可能需要稍微编辑数据文件,但是肯定可以。 如果您想进行更多更改,可以使用以下命令,

c = f [:,5]将创建一个新的1列数组,其中所有数据均来自原始文件中的第5列

这是您想要的吗? (我可能错误地解释了您的需求),您希望从新输出的每行显示的文件中提取5行,每行用'-'分隔。

f = open('file.txt', 'r')
text = ""
lines = []
counter = 0

for line in f:
    line = line.strip()
    if counter % 5 == 0 and text > '':
        counter = 0
        lines.append(text)
        text = ''

    text += line + ' '
    counter += 1  


for line in lines:
    vals = tuple(line.split())
    print('%s -- %s -- %s -- %s -- %s' % (vals))

以下内容不适合初学者。 认为它只是许多选择之一(而不是最佳方法)。

您可以使用以下答案一次读取5行:答案是什么?

#!/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))

注意:它期望输入中恰好有5*m行产生m输出行。

fileinput.input()返回输入行上的迭代器,这是上述代码如何对行进行分组的说明

$ python reformat-input.py input.txt
a0   -- b0   -- c00  -- d0   -- e0  
a1   -- b111 -- c1   -- d1   -- e1  
a2   -- b2   -- c2   -- d2   -- e2 

其中input.txt是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM