Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止程序在从文本文件(Python3)读取和打印时添加不需要的空行_Python_File_Python 3.x - Fatal编程技术网

如何防止程序在从文本文件(Python3)读取和打印时添加不需要的空行

如何防止程序在从文本文件(Python3)读取和打印时添加不需要的空行,python,file,python-3.x,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 = 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()

可能是一个非常简单的解决方案,但我被难住了,任何帮助都将不胜感激。

print
函数中使用
end
参数,如下所示

print(line_number, a_line, end="")
函数的默认参数列表如下所示

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
由于
end
具有
\n
,因此每次
print
调用后都会插入一行新行。

尝试以下操作:

 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()之后添加了一个新行。相反,您可以只在输入()的显示文本处使用所需的输出。

您从文本文件中读取的每一行末尾仍将有换行符,可接受答案的替代方法是在打印时将其删除:

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没有参数时就是这样做的)。

您看到了什么“不需要的空白行”?这是输入()在所需输出之后生成的换行符吗?请注意:不要手动增加行计数器,而是使用
enumerate()
,即:
对于行号,使用enumerate(a\u文件)中的一行:
这没有所需的效果。它关闭了行号和来自特定行的文件的数据之间的间隙,但不删除在单独的打印语句之间生成的空白行。谢谢您抽出时间。@sw123456您真的尝试过我建议的更改吗?因为
end
是解决此问题的唯一方法。现在我已经尝试了end=“”,它可以工作了。非常感谢。你以前写过sep=“”,但它不起作用。多谢各位@sw123456很抱歉:)添加输入而不是打印会导致错误。谢谢你的努力。现在找到了解决方案。我需要在打印报表中添加end=“”。很高兴你找到了解决方案。更正了我代码中的错误,输入语句现在可以工作了。再次感谢您抽出时间。您的代码没有回答这个问题,但允许我控制下一个“找到”行何时出现。再次感谢