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

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


但它返回错误:字符串和整数?

评论

不应该是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'

– TheDoctor
13年10月3日,下午2:25

这个答案已经过时了。反引号已过时,在Python 3中已被删除。有关更多详细信息,请参见此问题。该问题的其他答案是更好的解决方案。

– Roger Fan
2014年10月3日在16:37

@RogerFan,是的!不知道,我的回答如何得到这么多的赞扬o_o没想到这一点!

– Anirban Nag'tintinmj'
16年8月5日在20:25



反引号与repr()函数等效,而不是str()。对于非整数值,repr()和str()的结果可能会显着不同。

–马丁·彼得斯(Martijn Pieters)♦
16 Sep 14 '17:56

在Python3中,您可以使用以下f字符串:string = f'{str} {number}'

–艾默德·雷克(Ahmed Rezk)
19-09-7在9:16



#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']


评论


反引号是种愚蠢的行为。

–习惯
2010年5月17日在8:58

仍然值得一提的是,反引号等效于repr(),而不是str()。

–巴斯蒂安·莱纳德(BastienLéonard)
2010年5月17日在9:06

巴斯蒂安,谢谢您的来信,但我想我不会再回头了。

–您
2010年5月17日9:28



嗯,我试图取消我的投票(只是一次测试),然后再次投票;投票被取消,但我无法再投票...(“除非修改此答案,否则您的投票现在已锁定”)

–巴斯蒂安·莱纳德(BastienLéonard)
2010年5月17日在9:56

@Bastien,是的,有5分钟的时间可以撤消上/下投票,但是一旦结束,它就卡住了,在下一次编辑之前无法进行其他表决。我认为那是设计使然

–您
2010年5月17日在10:04



#3 楼

string = 'string%d' % (i,)


评论


只有在具有多个格式说明符时,才需要使用列表进行格式设置,否则,这很丑陋:)

– L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳
2010年5月17日在17:50

那不是一个列表,那是一个元组。如果要格式化的单个项目本身就是元组,那么您也需要它。

–伊格纳西奥·巴斯克斯(Ignacio Vazquez-Abrams)
2010年5月17日20:48

#4 楼

for i in range[1,10]: 
  string = "string" + str(i)


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

#5 楼

for i in range(11):
    string = "string{0}".format(i)


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


a TypeError,因为方括号表示列表的索引(a[3])或切片(a[3:5]),
由于[1,10]无效而导致SyntaxError错误,并且由于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是TypeError因为您不能在字符串中添加整数(与JavaScript不同)。

查看Python的新字符串格式方法的文档,它非常强大。

评论


(更正:如果您执行range = {(1,10):“ foo”},则range [1,10]实际上是语法上有效的表达式。)

–蒂姆·皮茨克(Tim Pietzcker)
2012年11月17日,11: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)