如何在从文本文件 - Python3中读取和打印时阻止我的程序添加不需要的空白行

时间:2015-01-08 14:04:42

标签: python file python-3.x

我有代码,它会读取文本文件并打印文件中的行,如果它们包含用户输入的特定单词(例如名称)。

问题在于,如果程序找到多条匹配“搜索过的单词”的行,则程序将打印行之间添加空行。如何让这个程序打印出与搜索匹配的行而不用空行分隔每个结果?

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

可能是一个非常简单的解决方案,但我很难过,任何帮助都会受到赞赏。

3 个答案:

答案 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)。