web-dev-qa-db-ja.com

Pythonのintを文字列にキャストする

FileX.txtという名前のテキストファイルをいくつか生成できるようにしたい(Xは整数):

for i in range(key):
    filename = "ME" + i + ".txt" //Error here! Can't concat a string and int
    filenum = filename
    filenum = open(filename , 'w')  

ファイル名= "ME" + iの部分を他の誰かが知っているので、名前が "ME0.txt"、 "ME1.txt"、 "ME2.txt"などのファイルのリストを取得します。

46
pythonTA
x = 1
y = "foo" + str(x)

Python documentation: https://docs.python.org/2/library/functions.html#str をご覧ください。

88
Florian Mayer

Python 2.6より前のバージョンの場合、 文字列フォーマット演算子_%_ を使用します。

_filename = "ME%d.txt" % i
_

2.6以降では、 str.format() メソッドを使用します。

_filename = "ME{0}.txt".format(i)
_

最初の例は2.6でも機能しますが、2番目の例が優先されます。

この方法で名前を付けるファイルが10個を超える場合は、ディレクトリリストでファイルが正しく順序付けられるように、先頭にゼロを追加することができます。

_filename = "ME%02d.txt" % i
filename = "ME{0:02d}.txt".format(i)
_

これにより、_ME00.txt_から_ME99.txt_などのファイル名が生成されます。桁数を増やすには、例の_2_をより大きな数字に置き換えます(たとえば、_ME{0:03d}.txt_)。

19
Ferdinand Beyer

どちらか:

"ME" + str(i)

または:

"ME%d" % i

特に、複数のトークンから文字列を作成する場合は、通常2番目のものが優先されます。

5

str()を使用してキャストするか、フォーマッターを使用できます。

"ME%d.txt" % (num,)
4
nmichaels

ここにあなたのコード全体の答え:

key =10

files = ("ME%i.txt" % i for i in range(key))

#opening
files = [ open(filename, 'w') for filename in files]

# processing
for i, file in Zip(range(key),files):
    file.write(str(i))
# closing
for openfile in files:
    openfile.close()
1