【问题标题】:How to not print a space after a comma [duplicate]如何在逗号后不打印空格[重复]
【发布时间】:2017-09-21 17:46:34
【问题描述】:

这是我当前的代码。打印将在“!”之前放置一个空格我已经在论坛上搜索了一个小时,但现在一切对我来说都太复杂了。这是一个愚蠢的问题,但我必须知道它为什么在逗号后添加这个随机空格。

fn = input("What's your First Name? ")
ln = input("What's your Last Name? ")
print ('Hello,',fn, ln,'!')

【问题讨论】:

    标签: python output


    【解决方案1】:

    当你打印一个字符串列表时,python 会插入一个空格。

    $ python3
    Python 3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 08:49:46)
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> print('My','name','is','doug')
    My name is doug
    >>> print('My'+'name'+'is'+'doug')
    Mynameisdoug
    

    您想将元素组合成单个字符串或(更好的方法)使用字符串格式输出。

    >>> fn = "Bob"
    >>> ln = "Jones"
    >>> msg = "Hello, "+fn+" "+ln+"!"
    >>> print(msg)
    Hello, Bob Jones!
    >>> msg = "Hello, {0} {1}!".format(fn,ln)
    >>> print(msg)
    Hello, Bob Jones!
    >>>
    

    【讨论】:

      【解决方案2】:

      这是一个愚蠢的问题,但我必须知道它为什么要随机添加 逗号后的空格。

      print 的默认设置是逗号后添加空格。

      删除! 之前的空格的一种方法是这样做:

      print('Hello,',fn, ln, end='')
      print('!')
      
      Out : Hello, First Last!
      

      这里end= 指定了在 print() 语句结束时应该打印的内容,而不是default newline

      另一个更简单的方法是 concatenate 字符串。即,

      print('Hello,',fn, ln + '!')
      

      【讨论】:

        【解决方案3】:

        在 python 3.6 中,您可以使用fstrings,它可读性好,并且比其他格式方法稍快:

        print(f'Hello {fn} {ln}!')
        

        【讨论】:

          【解决方案4】:

          这是格式字符串的工作。

          Python 3:

          print('Hello {} {}!'.format(fn, ln))
          

          Python 2:

          print 'Hello %s %s!' % (fn, ln)
          

          【讨论】:

            【解决方案5】:

            您可以将感叹号 (ln) 之前的元素连接到末尾:

            fn = input("What's your First Name? ")
            ln = input("What's your Last Name? ")
            print ('Hello,', fn, ln + '!')
            

            给予:

            Hello, Fist Last!
            

            print() 声明文档指出:

            所有非关键字参数都像 str() 一样转换为字符串并写入流中,以 sep 分隔

            因为默认情况下,sep 是一个空格 (' '),所以在传递给 function 的每个参数之间都有空格。如上,如果你自己将感叹号连接到ln 上,则默认的sep 参数不会被插入,也不会得到空格。

            【讨论】:

            • ln 转换为字符串是不必要的,因为ln 已经是一个字符串
            • @KaushikNP 我在添加文档时意识到了这一点!谢谢你:)
            猜你喜欢
            • 2023-01-17
            • 2017-11-22
            • 2014-03-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多