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



为什么以下命令生成带有隔断线的输入。似乎隔断线出现在{}之后。我之前使用过format功能,它工作正常。现在发生了什么?

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

我的猜测是你正在从文件中读取这些数字,这意味着你读取的是字符串'3n'而不是数字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))

显然,您的数据可能不遵循此示例中的格式,但要点是在源头处理这些事情。

我无法重现此问题。您的变量是否number_anumber_b字符串?如果是,则可能包含新行。 试试这个:

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

例:

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

输出:

true: 4, estimated: 5

最新更新