使用str.format打印时出现不稳定的换行符

时间:2017-08-29 06:55:22

标签: python string format

为什么以下命令使用breakline生成输入。似乎断续线出现在{}之后。之前我使用过format函数,它运行正常。现在发生什么事?

print('true: {}, estimated: {}'.format(number_a, number_b))

true: 3
, estimated: 3

2 个答案:

答案 0 :(得分:3)

我的猜测是你正在从文件中读取这些数字,这意味着你用字符串'3\n'而不是数字3读取。

尝试使用str.strip

删除尾随换行符
print('true: {}, estimated: {}'.format(number_a.rstrip(), number_b))

更好的选择是在您阅读时清理数据,这样您就不必担心这样的事情了。

numbers = []
with open(...) as f:
    for line in f:
        numbers.append(line.strip())

a, b = numbers[:2] # first two elements

print('true: {}, estimated: {}'.format(a, b))

显然,您的数据可能不符合此示例中的格式,但外卖是在源头处理这些内容。

答案 1 :(得分:1)

我无法重现此问题。你的变量number_anumber_b是否有任何机会?如果是,它可能包含一个新行。 试试这个:

print('true: {}, estimated: {}'.format(int(number_a), int(number_b)))

示例:

number_a = '4\n'
number_b = '5'
print('true: {}, estimated: {}'.format(int(number_a), int(number_b)))

输出:

true: 4, estimated: 5