使用str.format格式(name='text'),意外地在结尾添加了'\n'

2024-03-29 01:37:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,我正在逐行阅读和迭代。你知道吗

假设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”。 是这样的吗?有没有办法不那样做?你知道吗


Tags: nameyouhelloforoutputisaddressmy
2条回答

使用

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

保持nameaddress不带尾随换行符。你知道吗

可以使用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())

相关问题 更多 >