Python字符串和整数连接[重复]

Posted

技术标签:

【中文标题】Python字符串和整数连接[重复]【英文标题】:Python strings and integer concatenation [duplicate] 【发布时间】:2011-02-20 07:14:36 【问题描述】:

我想在 for 循环中使用附加的整数创建字符串。像这样:

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

但是它返回一个错误:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

连接字符串和整数的最佳方法是什么?

【问题讨论】:

应该t it be range(1,10)`? 您的问题不清楚。你想得到什么输出? string = "string10"? string = "string1string2string3string4string5string6string7string8string9string10"?十个不同的变量? @stephan: +1,但应该是range(1,11) :) @Tim: 甚至range(11) 正在看评论... @michele 您是否有机会更改此问题的已接受答案?反引号已弃用,不应使用。 【参考方案1】:

注意:

此答案中使用的方法(反引号)在更高版本的 Python 2 中已弃用,并在 Python 3 中删除。请改用 str() 函数。


你可以使用:

string = 'string'
for i in range(11):
    string +=`i`
print string

它将打印string012345678910

要获得string0, string1 ..... string10,您可以按照@YOU 的建议使用它

>>> string = "string"
>>> [string+`i` for i in range(11)]

根据 Python3 更新

你可以使用:

string = 'string'
for i in range(11):
    string +=str(i)
print string

它将打印string012345678910

要获得string0, string1 ..... string10,您可以按照@YOU 的建议使用它

>>> string = "string"
>>> [string+str(i) for i in range(11)]

【讨论】:

如果我输入这个:47,那么为什么我会在我的字符串中得到这个:u'47' 这个答案已经过时了。反引号已过时,已在 Python 3 中删除。有关更多详细信息,请参阅this question。这个问题的其他答案是更好的解决方案。 @RogerFan,没错!不知道,我的回答是怎么得到这么多赞的o_o没想到会这样! 反引号相当于repr() 函数,而不是str()。对于非整数值,repr()str() 的结果可能会有很大差异。 在 Python3 中,你可以像这样使用 f 字符串:string = f'strnumber'【参考方案2】:
for i in range (1,10):
    string="string"+str(i)

要获得string0, string1 ..... string10,你可以这样做

>>> ["string"+str(i) for i in range(11)]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9', 'string10']

【讨论】:

我是不是错过了什么来获得反对票? 仍然值得一提的是,反引号等价于repr(),而不是str() Bastien,谢谢你的来信,但我想我不会再把它放回去了。 嗯,我试图删除我的投票(只是一个测试),然后再次投票;投票被禁止,但我不能再投票了......(“除非编辑此答案,否则您的投票现在已锁定”) @Bastien,是的,有 5 分钟的窗口可以撤消赞成/反对票,但是一旦结束,它就会卡住,直到下一次编辑才能进行不同的投票。我认为这是设计使然【参考方案3】:
for i in range[1,10]: 
  string = "string" + str(i)

str(i) 函数将整数转换为字符串。

【讨论】:

【参考方案4】:
string = 'string%d' % (i,)

【讨论】:

当你有多个格式说明符时,你只需要使用一个列表来格式化,否则,它很丑:) 那不是列表,那是元组。如果要格式化的单个项目本身就是一个元组,你也需要它。【参考方案5】:
for i in range(11):
    string = "string0".format(i)

你所做的 (range[1,10]) 是

类型错误,因为括号表示列表的索引 (a[3]) 或切片 (a[3:5]), 一个语法错误,因为[1,10] 无效,并且 由于range(1,10)[1, 2, 3, 4, 5, 6, 7, 8, 9],因此出现双倍错误,而您似乎想要[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

string = "string" + i 是一个类型错误,因为您不能将整数添加到字符串中(与 javascript 不同)。

看Python's new string formatting method的文档,很强大。

【讨论】:

(更正:如果你使用range=(1,10): "foo",那么range[1,10]实际上是一个语法上有效的表达式。)【参考方案6】:

您可以使用生成器来执行此操作!

def sequence_generator(limit):  
    """ A generator to create strings of pattern -> string1,string2..stringN """
    inc  = 0
    while inc < limit:
        yield 'string'+str(inc)
        inc += 1

# to generate a generator. notice i have used () instead of []
a_generator  =  (s for s in sequence_generator(10))

# to generate a list
a_list  =  [s for s in sequence_generator(10)]

# to generate a string
a_string =  '['+", ".join(s for s in sequence_generator(10))+']'

【讨论】:

【参考方案7】:

如果我们想要像'string0123456789' 这样的输出,那么我们可以使用map functionjoin 字符串方法。

>>> 'string'+"".join(map(str,xrange(10)))
'string0123456789'

如果我们想要字符串值列表,则使用list comprehension 方法。

>>> ['string'+i for i in map(str,xrange(10))]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9']

注意:

在 Python 2.x 中使用 xrange()

在 Python 3.x 中使用 range()

【讨论】:

【参考方案8】:

我做了其他事情。 我想替换列表外列表中包含短语的单词。 我想用一个新词替换该字符串/单词,该词将是字符串和数字之间的连接,并且该数字/数字将指示短语/子列表/列表列表的位置。

也就是说,我用一个字符串和一个递增的数字替换了一个字符串。

    myoldlist_1=[[' myoldword'],[''],['tttt myoldword'],['jjjj ddmyoldwordd']]
        No_ofposition=[]
        mynewlist_2=[]
        for i in xrange(0,4,1):
            mynewlist_2.append([x.replace('myoldword', "%s" % i+"_mynewword") for x in myoldlist_1[i]])
            if len(mynewlist_2[i])>0:
                No_ofposition.append(i)
mynewlist_2
No_ofposition

【讨论】:

【参考方案9】:

字符串和整数的连接很简单: 只需使用

abhishek+str(2)

【讨论】:

以上是关于Python字符串和整数连接[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串数组转换为整数python [重复]

Python 3.5 与 2.7 之间字​​符串连接的巨大时间差异

带有带有整数键的dict的python字符串格式()[重复]

如何对在python中存储为字符串的整数列表进行排序[重复]

如何将两个整数连接成一个字符串(python)?

python字符串和编码