簡體   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