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

时间:2019-02-21 00:17:40

标签: python python-3.x

我的代码是

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()

由于某种原因,我的输出在每行打印之后都有一个空行。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

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')

答案 1 :(得分:0)

遇到此类问题时,理解它的最佳方法是在输出中打印可见字符:

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="")的情况下进行打印。