我有代码,它会读取文本文件并打印文件中的行,如果它们包含用户输入的特定单词(例如名称)。
问题在于,如果程序找到多条匹配“搜索过的单词”的行,则程序将打印行之间添加空行。如何让这个程序打印出与搜索匹配的行而不用空行分隔每个结果?
line_number = 0
name = input("Who are you looking for? ")
with open('example.txt', "r") as a_file:
for a_line in a_file:
line_number += 1
if name in a_line:
print(line_number, a_line)
input()
可能是一个非常简单的解决方案,但我很难过,任何帮助都会受到赞赏。
答案 0 :(得分:2)
在end
函数中使用print
参数,就像这样
print(line_number, a_line, end="")
print
函数的默认参数列表如下所示,
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
由于end
有\n
,因此每次调用print
后都会插入一个新行。
答案 1 :(得分:0)
试试这个:
line_number = 0
name = input("Who are you looking for? ")
with open('example.txt', "r") as a_file:
for a_line in a_file:
line_number += 1
if name in a_line:
input(print("{}, {}".format(line_number, a_line)))
我怀疑你得到的“额外线条”是使用input()的结果,它在所需输出的print()之后添加了一个新行。相反,您可以在输入()的显示文本中使用所需的输出。
答案 2 :(得分:0)
从文本文件中读取的每一行在结尾处仍然会有换行符,替代接受的答案就是在打印时将其删除:
line_number = 0
name = input("Who are you looking for? ")
with open('example.txt', "r") as a_file:
for a_line in a_file:
line_number += 1
if name in a_line:
print(line_number, a_line.rstrip())
input()
如果你想更具体一点,你可以选择使用.rstrip("\n")
,但我猜你对任何空格都不感兴趣(这就是没有参数的rstrip)。