【问题标题】:Concatenating string and integer in Python在python中连接字符串和整数
【发布时间】:2012-07-18 12:47:04
【问题描述】:

在python中说你有

s = "string"
i = 0
print s+i

会给你错误 所以你写

print s+str(i) 

不会出错。

我认为这是处理 int 和 string 连接的一种非常笨拙的方法。 甚至 Java 也不需要显式转换为 String 来执行这种排序 的串联。 有没有更好的方法来进行这种连接,即在 Python 中不进行显式转换?

【问题讨论】:

  • 这是因为 Python 是强类型 (en.wikipedia.org/wiki/Strong_typing) 语言(谷歌可以了解更多信息:))。
  • 这会导致歧义。 "1" + 12"11" 的结果是什么?为什么?
  • 伙计,我不确定你在想什么,但请不要只是假设。我的问题是连接 2 种不同的对象类型,我找到了解决方案。我不知道你在 python 中编程了多少,但你有没有尝试连接两个字符串,只是当其中一个是 None 类型时才得到错误?您可以进行显式检查,但这只是额外的代码。当你需要记录错误时,这种事情是必需的。
  • 只要s+str(i),你是对的!

标签: python concatenation string-concatenation


【解决方案1】:

字符串格式化,使用新式.format() 方法(使用.format() 提供的默认值):

 '{}{}'.format(s, i)

或者更老的,但“仍然存在”,%-formatting:

 '%s%d' %(s, i)

在上面的两个示例中,连接的两个项目之间都有 no 空格。如果需要空间,可以简单地添加到格式字符串中。

这些提供了很多关于如何连接项目、它们之间的空间等方面的控制和灵活性。有关format specifications see this的详细信息。

【讨论】:

    【解决方案2】:

    现代字符串格式:

    "{} and {}".format("string", 1)
    

    【讨论】:

    【解决方案3】:

    无字符串格式:

    >> print 'Foo',0
    Foo 0
    

    【讨论】:

    • 这适用于 print 但不能作为字符串分配给变量。它给出了 Set 对象。
    • 它还会在两个项目之间插入一个额外的空白,除非您使用 v3 print() 函数并设置它的一些参数。
    【解决方案4】:

    Python 是一门有趣的语言,虽然通常有一种(或两种)“显而易见”的方式来完成任何给定的任务,但灵活性仍然存在。

    s = "string"
    i = 0
    
    print (s + repr(i))
    

    上面的代码 sn-p 是用 Python3 语法编写的,但 print 后面的括号始终是允许的(可选),直到版本 3 强制它们。

    希望这会有所帮助。

    凯特琳

    【讨论】:

      【解决方案5】:

      format() 方法可用于连接字符串和整数

      print(s+"{}".format(i))
      

      【讨论】:

        【解决方案6】:

        如果你只想打印你可以这样做:

        print(s , i)
        

        【讨论】:

          【解决方案7】:

          在 python 3.6 及更高版本中,您可以像这样格式化它:

          new_string = f'{s} {i}'
          print(new_string)
          

          或者只是:

          print(f'{s} {i}')
          

          【讨论】:

            【解决方案8】:

            假设您想在这样的情况下连接字符串和整数:

            for i in range(1,11):
               string="string"+i 
            

            你得到类型或连接错误

            最好的方法是这样做:

            for i in range(1,11):
               print("string",i)    
            

            这将为您提供连接的结果,例如字符串 1、字符串 2、字符串 3 ...等

            【讨论】:

              【解决方案9】:

              你也可以使用f-string

              s = "string"
              i = 95
              print(f"{s}{i}")
              

              【讨论】:

                最近更新 更多