【问题标题】:How do I add space between two variables after a print in Python如何在 Python 中打印后在两个变量之间添加空格
【发布时间】:2012-04-15 17:09:56
【问题描述】:

我对 Python 还很陌生,所以我正在尝试编写一些简单的代码。但是,在其中一种做法中,我的代码应该在左侧显示一些以英寸为单位的数字,并在右侧显示数字的转换;

count = 1
conv = count * 2.54
print count, conv

我希望打印的输出在它们之间留一些空间;

count = 1
conv = count * 2.54
print count,     conv

我不知道该怎么做。我到处搜索,但我只能找到试图摆脱空间的人。如果有人能引导我朝着正确的方向前进,我将不胜感激。

哦,我刚刚意识到我使用的是 Python 2.7,而不是 3.x。不确定这是否重要。

【问题讨论】:

    标签: python variables printing space punctuation


    【解决方案1】:

    一个简单的方法是:

    print str(count) + '  ' + str(conv)
    

    如果您需要更多空格,只需将它们添加到字符串中:

    print str(count) + '    ' + str(conv)
    

    一种更奇特的方式,使用新的字符串格式化语法:

    print '{0}  {1}'.format(count, conv)
    

    或者使用旧语法,将小数位数限制为两位:

    print '%d  %.2f' % (count, conv)
    

    【讨论】:

    • 这些都不起作用。第一种方式给了我一个 Traceback 错误,而第二种方式就好像它是 print count, conv
    • 修复了第一个,对于所有这些:您可以在中间添加任意数量的空格!
    • 第一个不起作用,因为您不能将整数添加到字符串,也不能将字符串添加到浮点数。要在第二个和第三个示例中获得更多空间,只需在 {0} 和 {1} 或 %d 和 %f 之间放置所需数量的空格。
    • @Hebon 修复了所有示例,中间有两个空格。添加你需要的空格很简单,在中间添加就行了。此外,修复了仅显示两位小数的最后一个示例
    • 我设法通过删除一些未使用的代码来消除 Traceback,但是它仍然无法正常工作。使用print str(count) + ' ' + str(conv) 只会将它们混合在一起,使它们显示为“12.54”。
    【解决方案2】:

    请改用string interpolation

    print '%d   %f' % (count,conv)
    

    【讨论】:

    • 这几乎可以工作,但现在我的“conv”变量末尾有额外的零Inches Centimeters 1 2.540000
    • 然后调整%f 说明符。
    【解决方案3】:

    您也可以使用ljust/rjust 使格式更好。

    print "%s%s" % (str(count).rjust(10), conv)
    

    print str(count).ljust(10), conv
    

    【讨论】:

    • 我实际上比printf 亲戚更喜欢这个解决方案。它比 printf 格式说明符更容易理解,并且完全按照它在锡上所说的那样做。
    【解决方案4】:

    一个快速警告,这是一个相当冗长的答案。

    打印有时很棘手,我刚开始时遇到了一些问题。你想要的是在你打印它们之后在两个变量之间有几个空格吗?有很多方法可以做到这一点,如上面的答案所示。

    这是你的代码:

    count = 1
    conv = count * 2.54
    print count, conv
    

    它的输出是这样的:

    1 2.54
    

    如果你想要在它们之间有空格,你可以通过在它们之间插入一串空格来以天真的方式做到这一点。变量 count 和 conv 需要转换为字符串类型以将它们连接(连接)在一起。这是通过 str() 完成的。

    print (str(count) + "           " + str(conv))
    ### Provides an output of:
    1           2.54
    

    要做到这一点,这是一种更新、更 Python 的方式,我们使用 % 符号和一个字母来表示我们正在使用的值的种类。在这里,我使用下划线而不是空格来显示有多少。最后一个值之前的模数只是告诉python按照我们提供的顺序插入以下值。

    print ('%i____%s' % (count, conv))
    ### provides an output of:
    1____2.54
    

    我使用 %i 表示计数,因为它是一个整数,而 %s 表示转换,因为在那种情况下使用 %i 会为我们提供“2”而不是“2.54” 从技术上讲,我可以同时使用 % s,但一切都很好。

    我希望这会有所帮助!

    -约瑟夫

    附: 如果您想使您的格式变得复杂,您应该查看 prettyprint 以获取大量文本,例如字典和元组列表(作为 pprint 导入)以及 自动制表符、间距和其他很酷的垃圾。

    这里有更多关于 python 文档中字符串的信息。 http://docs.python.org/library/string.html#module-string

    【讨论】:

    • 这是非常有用的。感谢您花时间解释它。
    • 谢谢,我很高兴能为您提供帮助!
    【解决方案5】:

    在python3中可以这样做:

    打印(a,b,end="")

    【讨论】:

      【解决方案6】:

      这是一种愚蠢/骇人的方式

      print count,    
      print conv
      

      【讨论】:

        【解决方案7】:

        如果您只想打印而不是存储变量。 您可以在print()函数中使用sep=参数,如下:

        print("string", "string", sep="something between them")
        
        space_num = 10
        
        count = 1
        conv = count * 2.54
        print(count, conv, sep=" "*space_num)
        

        如果要将值存储为一个变量,那么我认为最好使用f字符串,如下所示:

        space_num = 10
        
        count = 1
        conv = count * 2.54
        
        result = f"{count}{' ' * space_num}{conv}"
        print(result)
        

        【讨论】:

          【解决方案8】:

          print str(count) + ' ' + str(conv) - 这不起作用。但是,用, 替换+ 对我有用

          【讨论】:

            【解决方案9】:

            您应该使用 python 显式转换标志 PEP-3101

            'My name is {0!s:10} {1}'.format('Dunkin', 'Donuts')

            'My name is Dunkin Donuts'

            'My name is %-10s %s' % ('Dunkin', 'Donuts')

            'My name is Dunkin Donuts'

            https://www.python.org/dev/peps/pep-3101/

            【讨论】:

              【解决方案10】:

              添加标签的一种简单方法是使用\t 标签。

              print '{0} \t {1}'.format(count, conv)
              

              【讨论】:

                【解决方案11】:
                print( "hello " +k+ "  " +ln);
                

                其中kln 是变量

                【讨论】: