2017-08-17 69 views
2

我想不通爲什麼會有文本的每一行之間的空當我運行此代碼:爲什麼在文本行之間存在差距?

file = open("Children.txt", 'a') 
    file.write("\n" + childName) 
    file.close() 

    file = open("Children.txt", 'r') 
    lineList = file.readlines() 
    sorted(lineList) 
    print("List of children's names in alphabetical order:") 
    for line in lineList: 
     print(line) 
    file.close() 

各線之間的空間,只有當我使用排序()函數出現。如果我沒有將它包含在代碼中並使用print(file)函數,則結果在文本行之間沒有空格顯示。不過,我需要按字母順序顯示結果,這就是我使用sorted()函數的原因。

+2

試試這個:'打印(線,結束=「」)' –

+1

打印添加換行符lineiterator保持它:兩次印刷 –

+1

順便說一句,這是一個有點更好,如果你把換行符'\ N'在結束行結束。這樣,你的文件總是以'\ n'結尾;如果文件沒有以EOL結尾,某些工具將無法正確處理文本文件,例如最後一行可能不會顯示。 –

回答

4

f.readlines()在文件中讀取時不去除尾隨換行符。您的列表項目將包含一個後面的換行符,它將被打印出來。順便提一句,print在輸入結束處添加換行符,這意味着每行都印有兩個換行符。

您可以通過去除換行,或print與荷蘭國際集團end=""更改此:

for line in lineList: 
    print(line.rstrip()) # or print(line, end="") 

此外,sorted不是就地功能。如果您想在現場排序,請致電.sort()

lineList.sort() 
+0

print(line.rstrip())和print(line,end =「」 )的優點和缺點?非常有幫助的答案,我使用.rstrip()選項,它工作得很好。我只是想確保我使用最好的選擇。非常感謝你的幫助。 – sleepylog

+0

@sleepylog這主要是一個偏好問題。我認爲'print(...,end =「」)'稍快,因爲'rstrip'是一個開銷。但這取決於你。 –

+1

謝謝你,現在我會得到(line,end =「」)選項,看看它是如何發展的。你一直在幫助很大。乾杯! – sleepylog

相關問題