簡體   English   中英

使用readlines從文件打印-新行加倍

[英]Printing from a file using readlines - new lines are doubled

我的代碼是

def print_words():
    letter=input("Enter First Letter:\n")
    file=open("english.txt", "r")
    words=[]
    for word in file.readlines():
        words.append(word)
        if word[0].lower()==letter.lower():
            print(word)

print_words()

由於某種原因,我的輸出在每行打印之后都有一個空行。 有什么建議嗎?

file.readlines返回一個包含所有行的數組,但是不會刪除結尾的換行符(例如['hello\\n', 'bye\\n'] )。

當您打印它們時,它將打印出嵌入的換行符以及print本身插入的另一行。

有兩種方法可以簡單地解決此問題:

  1. 告訴print 不要插入新行:
print(word, end='')
  1. 從每個單詞中刪除尾隨\\n
word = word.strip()
# Or, if you want to be extremely specific: word = word.strip('\n')

遇到此類問題時,最好的理解方法是在輸出中打印可見字符:

def print_words():
    letter=input("Enter First Letter:\n")
    file=open("english.txt", "r")
    words=[]
    for word in file.readlines():
        words.append(word)
        if word[0].lower()==letter.lower():
            print("-", word, "-")

print_words()

這樣,輸入j后,您已經對問題的起因有了模糊的認識:

- je suis là
 -
- je sais
 -

如建議的那樣,您甚至可以使用print(repr(word))來代替輸出:

'je suis là\n'
'je sais \n'

word包含整行,包括行尾。 一個快速的解決方法是在不包含新行print(word, end="")情況下進行打印。

暫無
暫無

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

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