我的代码是
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()
由于某种原因,我的输出在每行打印之后都有一个空行。有什么建议吗?
答案 0 :(得分:4)
file.readlines
返回包含所有行的数组,但是不会删除结尾的换行符(例如['hello\n', 'bye\n']
)。
打印它们时,它会打印出嵌入的换行符以及print
本身插入的另一行。
有两种方法可以简单地解决此问题:
print
不插入新行:print(word, end='')
\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="")
的情况下进行打印。