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

时间:2017-01-08 21:35:03

标签: 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:
        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'。 这是怎么回事?有没有办法不这样做?

2 个答案:

答案 0 :(得分:0)

使用

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

保持nameaddress不留尾线。

答案 1 :(得分:0)

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