![](/img/trans.png)
[英]How do I format input from a text file into a defaultdict in 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.