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

Python 使用str.format打印时不稳定的换行,python,string,format,Python,String,Format,为什么以下命令会生成带有特征线的输入。特征线似乎出现在{}之后。我以前使用过格式函数,效果很好。现在发生了什么 print('true: {}, estimated: {}'.format(number_a, number_b)) true: 3 , estimated: 3 我猜您正在从文件中读取这些数字,这意味着您读取的是字符串'3\n',而不是数字3 尝试使用str.strip删除尾部换行符: print('true: {}, estimated: {}'.format(number_

为什么以下命令会生成带有特征线的输入。特征线似乎出现在
{}
之后。我以前使用过
格式
函数,效果很好。现在发生了什么

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

true: 3
, estimated: 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))

显然,您的数据可能不符合本例中的格式,但需要从源代码处处理这些数据。

我猜您是从文件中读取这些数字,这意味着您读取的是字符串
'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))

显然,您的数据可能不符合本例中的格式,但需要在源代码处处理这些内容。

我无法重现此问题。您的变量
number\u a
number\u 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

我无法复制这个问题。您的变量
number\u a
number\u 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

type(number\u a)
您能自己打印
number\u a
吗。它实际上是一个整数,还是一个带尾随换行符的字符串?
type(number\u a)
您能自己打印
number\u a
吗。它实际上是一个整数,还是一个带有尾随换行符的字符串?