【问题标题】:Erratic line break when printing with str.format使用 str.format 打印时出现不稳定的换行符
【发布时间】:2017-08-29 06:55:22
【问题描述】:

为什么下面的命令会产生带有断线的输入。似乎断线出现在{} 之后。我之前使用过format 函数,它运行良好。现在发生什么事?

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

true: 3
, estimated: 3

【问题讨论】:

  • type(number_a)
  • 请您自行打印number_a。它实际上是一个整数,还是一个带有尾随换行符的字符串?

标签: python string format


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多