簡體   English   中英

如何從Python輸出中刪除不需要的縮進(文件處理)?

[英]How do I remove unwanted indentation from Python output (File handling)?

我一直在研究使用Python 3.5.2從文件讀取的程序,其中結果以表的形式輸出。 我已將數據存儲為CSV格式的文件(但作為文本文件)

我不確定為什么,但是當我運行該過程時,結果似乎在第一條記錄后縮進了兩個空格。

def display():
    with open("StudentScores.txt","r") as Scores:
        print("{0:<10}      {1:<10}        {2:<5}".format("\nFIRSTNAME","SURNAME","SCORE"))
        for eachLine in Scores:
            eachLine.strip()
            each=eachLine.split(",")
            print("{0:<10}      {1:<10}        {2:<5}".format(each[0],each[1],each[2]),end="",sep="")

我正在使用的文本文件:

Ralph,White,41
Maria,Cox,26
Sharon,Barnes,88
Eric,Garcia,31
Cheryl,Scott,60
Ron,Cooper,11
Lori,Ramirez,34
William,Jones,60
Evelyn,Baker,28
Janice,Sanders,10
Ralph,White,41
Maria,Cox,26
Sharon,Barnes,88
Eric,Garcia,31
Cheryl,Scott,60
Ron,Cooper,11
Lori,Ramirez,34
William,Jones,60
Evelyn,Baker,28
Janice,Sanders,10

最后是我收到的輸出(從IDLE復制)

FIRSTNAME      SURNAME           SCORE
Ralph           White             41
  Maria           Cox               26
  Sharon          Barnes            88
  Eric            Garcia            31
  Cheryl          Scott             60
  Ron             Cooper            11
  Lori            Ramirez           34
  William         Jones             60
  Evelyn          Baker             28
  Janice          Sanders           10
  Ralph           White             41
  Maria           Cox               26
  Sharon          Barnes            88
  Eric            Garcia            31
  Cheryl          Scott             60
  Ron             Cooper            11
  Lori            Ramirez           34
  William         Jones             60
  Evelyn          Baker             28
  Janice          Sanders           10

有什么建議么? 如果有幫助,我在新的筆記本電腦(Windows 10)上僅使用Python 3天。

當您從文件中讀取行時:

for eachLine in Scores:

這些行的末尾包括換行符(如果文件缺少最后一個換行符,則最后一行除外)。

致電strip

eachLine.strip()

不會改變eachLine 它返回一個新的,已剝離的字符串,您將立即忽略該字符串並將其丟棄。 eachLine仍有尾隨換行符。

當您調用split

each=eachLine.split(",")

each[2]都有尾隨換行符。

當您用替換字段{2:<5}打印each[2]時, each[2]包含2位數字和換行符。 <5在寬度5的字段中將其左對齊,在末尾用空格填充,因此它將在下一行打印兩位數字,換行符和兩個空格

要解決此問題,請實際存儲strip的返回值,停止對分數字段進行空格填充,並停止傳遞end="" sep=""也是多余的,因為您一次只print一個字符串:

def display():
    with open("StudentScores.txt","r") as Scores:
        print("{0:<10}      {1:<10}        {2}".format("FIRSTNAME","SURNAME","SCORE"))
        for eachLine in Scores:
            eachLine = eachLine.strip()
            each = eachLine.split(",")
            print("{0:<10}      {1:<10}        {2}".format(each[0],each[1],each[2]))

更改此行:

print("{0:<10}      {1:<10}        {2:<5}".format(each[0],each[1],each[2]),end="",sep="")

對此:

# Just changing <5 to <3
print("{0:<10}      {1:<10}        {2:<3}".format(each[0],each[1],each[2]),end="",sep="")

並且應該以所需的格式打印。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM