我想在for循环中使用附加到整数的字符串来创建字符串。像这样:
for i in range(1,11):
string="string"+i
但它返回错误:字符串和整数?
#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 function
和join
方法。 >>> '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)
评论
不应该是range(1,10)`?您的问题不清楚。您想要获得什么输出? string =“ string10”? string =“ string1string2string3string4string5string6string7string8string9string10”?十个不同的变量?
@stephan:+1,但应该是range(1,11):)
@Tim:甚至可能是range(11)看着评论...
@michele您是否有机会更改此问题的接受答案?反引号已弃用,不应使用。