![](/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.