Python 使用str.format(name=';text';),意外地添加了一个'\n';最后

Python 使用str.format(name=';text';),意外地添加了一个'\n';最后,python,string,format,Python,String,Format,我有一个文本文件,我正在逐行阅读和迭代 假设txt文件的内容如下: hello, my name is {name}. my address is {address}. thank you for listening. 以下是我正在使用的代码: def read_function (given_name, given_address): output = [] file = open(r"directory\etc..", "r") for line in file

我有一个文本文件,我正在逐行阅读和迭代

假设txt文件的内容如下:

hello,

my name is {name}.
my address is {address}.

thank you for listening.
以下是我正在使用的代码:

def read_function (given_name, given_address):
    output = []
    file = open(r"directory\etc..", "r")
    for line in file:
        output.append(line.format(name=given_name, address=given_address)

    print ("".join(output))
我遇到的问题是,当它打印时,它实际上会按如下方式打印:

hello,

my name is Susan
.
my address is 123 mars road
.

thank you for listening.
似乎格式正在命名格式的正后方添加“\n”。 是这样吗?有没有办法不这样做?

使用

output.append(line.format(
    name=given_name.strip('\n'),
    address=given_address.strip('\n'))
)

要保留
名称
地址
,而不保留尾随的换行符。

您可以使用
str.rstrip()
从参数字符串中删除尾随的空白字符(包括
\n
)。此外,您还可以通过使用
file.read()
一次读取整个格式字符串来简化该函数:

def read_function(given_name, given_address):
    with open(r"directory\etc..") as f:
        format_str = f.read()
        print(format_str.format(name=given_name.rstrip(),
                                address=given_address.rstrip())

你的名字是什么?它是否包含
\n
?似乎
给定的名称
给定的地址
有额外的
\n
。。。使用
strip()
函数“清理”字符串。。。格式似乎正确,我认为@Daniel是对的,
给定的\u名称
地址
必须在末尾有一个
\n
。如何设置?print附加了一个换行符,而给定的_名称已经以一个换行符结尾。您可以使用
strip()
(这也会删除前导空格),或者尝试使用
在行尾添加智能空格。真不敢相信我竟然没想到那件事。非常感谢。Im使用Tkinter制作gui,根据特定输入(票号、业务地址等)自动生成电子邮件。当我在文本框中获取字符串时,我没有意识到它包含一个\n。在读取
给定的\u name
时,而不是在使用它时,应该去掉换行符。