web-dev-qa-db-ja.com

Pythonの文字列と整数の連結

Forループで、それに追加された整数を使用して文字列を作成したいです。このような:

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

しかし、それはエラーを返します。

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

文字列と整数を連結するための最良の方法は何ですか?

309
michele

注意:

この答えで使われている方法(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)]

Python 3に従って更新

あなたが使用することができます:

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)]
221
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']
260
YOU
for i in range[1,10]: 
  string = "string" + str(i)

str(i)関数は整数を文字列に変換します。

34
Rizwan Kassim
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の新しい文字列フォーマット方法 - のドキュメントを見てください 、それは非常に強力です。

18
Tim Pietzcker

これを行うためにジェネレータを使うことができます。

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()を使用

1
Vivek Sable

私は他に何かしました。私はリストのリストの中で、フレーズを含んだ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
1