Forループで、それに追加された整数を使用して文字列を作成したいです。このような:
for i in range(1,11):
string="string"+i
しかし、それはエラーを返します。
TypeError: unsupported operand type(s) for +: 'int' and 'str'
文字列と整数を連結するための最良の方法は何ですか?
この答えで使われている方法(backticks)は、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)]
あなたが使用することができます:
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)]
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']
for i in range[1,10]:
string = "string" + str(i)
str(i)
関数は整数を文字列に変換します。
string = 'string%d' % (i,)
for i in range(11):
string = "string{0}".format(i)
あなたがしたこと(range[1,10]
)は
a[3]
)またはスライス(a[3:5]
)を表すので、TypeErrorです。[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]
が欲しいようですJavaScriptとは異なり、文字列に整数を追加することはできないため、string = "string" + i
はTypeErrorです。
Pythonの新しい文字列フォーマット方法 - のドキュメントを見てください 、それは非常に強力です。
これを行うためにジェネレータを使うことができます。
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))+']'
'string0123456789'
のような出力が欲しいなら、map function
とstringのjoin
メソッドを使うことができます。
>>> 'string'+"".join(map(str,xrange(10)))
'string0123456789'
Listの文字列値が必要な場合は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()
を使用
私は他に何かしました。私はリストのリストの中で、フレーズを含んだWordを置き換えたいと思いました。その文字列/ Wordを、文字列と数値の間の結合になる新しいWordに置き換えたいと思いました。その数値/数字は、句/サブリスト/リストのリストの位置を示します。
つまり、文字列をそれに続く文字列と増分番号に置き換えました。
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