【问题标题】:How to print variables without spaces between values [duplicate]如何打印值之间没有空格的变量[重复]
【发布时间】:2015-04-24 12:30:49
【问题描述】:

我想知道如何在打印某些内容时删除额外的空格。

就像我做的那样:

print 'Value is "', value, '"'

输出将是:

Value is " 42 "

但我想要:

Value is "42"

有什么办法吗?

【问题讨论】:

    标签: python whitespace python-2.x


    【解决方案1】:

    如果您不想使用空格,请不要使用 print ...,(带有尾随逗号)。使用字符串连接或格式化。

    串联:

    print 'Value is "' + str(value) + '"'
    

    格式:

    print 'Value is "{}"'.format(value)
    

    后者更加灵活,请参阅str.format() method documentationFormatting String Syntax section

    你还会遇到老的% formatting style

    print 'Value is "%d"' % value
    print 'Value is "%d", but math.pi is %.2f' % (value, math.pi)
    

    但这不如新的str.format() 方法灵活。

    在 Python 3.6 及更高版本中,您将使用格式化字符串 (f-string):

    print(f"Value is {value}")
    

    【讨论】:

    • 哦,好吧我不知道,刚学Python,谢谢你的快速回答!
    • ''.format 样式更可取,因为它避免了几个与% 样式相关的边缘情况,例如隐式提升到unicode 和无意的% tuple% dict 使用。
    • @J.F.Sebastian:更不用说str.format() 支持自定义格式的类;例如,您无法像使用 str.format() 那样轻松地使用 % 格式化 datetime 对象。然后是递归字段定义(可以使用字段来确定其他字段的格式)等
    【解决方案2】:

    只是一个简单的未来答案,我发现它作为初学者很容易使用: 类似于使用end='' 来避免换行,您可以使用sep='' 来避免空格......对于这里的这个问题,它看起来像这样: print('Value is "', value, '"', sep = '')

    愿它在未来对某人有所帮助。

    【讨论】:

    • 谢谢!这帮助我解决了困扰我多年的问题
    • 这是 python 3 特定的语法。
    • 超级有用的提示
    • 在打印语句中尝试使用三元条件运算符时非常有用,谢谢
    【解决方案3】:

    提供额外空白的是逗号。

    一种方法是使用字符串%方法:

    print 'Value is "%d"' % (value)
    

    类似于 C 中的 printf,允许您通过在字符串本身中使用格式说明符来合并和格式化 % 之后的项目。另一个例子,展示了多个值的使用:

    print '%s is %3d.%d' % ('pi', 3, 14159)
    

    无论如何,Python 3 允许您为单个 print 调用指定分隔符和终止符,从而大大改善了这种情况:

    >>> print(1,2,3,4,5)
    1 2 3 4 5
    
    >>> print(1,2,3,4,5,end='<<\n')
    1 2 3 4 5<<
    
    >>> print(1,2,3,4,5,sep=':',end='<<\n')
    1:2:3:4:5<<
    

    【讨论】:

    • % 插值容易出现tuples 和其他特殊行为的错误。
    • 然而,不知何故,我设法拼凑了代码并让它第一次工作。是的,您必须了解您使用的工具的缺点。在 any 字段中确实如此。我不是那种倾向于将任意类型传递给我的格式化操作的开发人员:-)
    • 这就是为什么.format 在新用户可能遇到的 99.999% 的 Python 安装中没有任何边缘情况的原因,是对新手更友好的解决方案-
    • @Antti。呃,只是出于兴趣,other 0.001% 是多少?或者这只是为了确定性而保持沉默?并不是说我有这个问题,我自己之前已经做过了。
    • 这意味着,有人可能正在学习 Python 来维护一个运行并坚持
    【解决方案4】:

    https://docs.python.org/2/library/functions.html#print

    print(*objects, sep=' ', end='\n', file=sys.stdout)

    注意:此函数通常不能作为内置函数使用,因为名称 print 被识别为 print 语句。要禁用该语句并使用 print() 函数,请在模块顶部使用以下未来语句:

    未来导入打印函数

    【讨论】:

      【解决方案5】:

      以 Martjin 所说的话为基础。 我会使用字符串插值/格式化。

      在 Python 2.x 中,由于您执行的 print 函数周围没有括号,这似乎是您正在使用的:

      print 'Value is "%d"' % value
      

      在 Python 3.x 中,您将改用 format 方法,因此您的代码将如下所示。

      message = 'Value is "{}"'
      print(message.format(value))
      

      【讨论】:

        【解决方案6】:
        >>> value=42
        
        >>> print "Value is %s"%('"'+str(value)+'"') 
        
        Value is "42"
        

        【讨论】:

        • 不需要额外的连接来获得" 字符
        • 用户 repr 或者,在本例中为 %r
        猜你喜欢
        • 2016-01-24
        • 2016-03-22
        • 1970-01-01
        • 1970-01-01
        • 2011-03-16
        • 2013-03-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多