在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')  

其他人是否知道如何执行filename =“ ME” +我的部分,所以我得到了具有以下名称的文件列表:“ ME0.txt”,“ ME1.txt”,“ ME2.txt”等

pythonTA asked 2020-06-24T21:01:49Z
5个解决方案
88 votes
x = 1
y = "foo" + str(x)

请参阅Python文档:[https://docs.python.org/2/library/functions.html#str]

Florian Mayer answered 2020-06-24T21:02:06Z
19 votes

对于2.6之前的Python版本,请使用字符串格式运算符ME00.txt

filename = "ME%d.txt" % i

对于2.6及更高版本,请使用ME00.txt方法:

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

尽管第一个示例仍可在2.6中使用,但第二个示例更为可取。

如果使用这种方式命名的文件超过10个,则可能需要添加前导零,以便在目录列表中正确排序文件:

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

这将产生文件名,例如ME00.txtME99.txt。有关更多数字,请使用更大的数字替换示例中的2(例如ME{0:03d}.txt)。

Ferdinand Beyer answered 2020-06-24T21:02:44Z
5 votes

要么:

"ME" + str(i)

要么:

"ME%d" % i

通常首选第二个,特别是如果您想从多个标记构建一个字符串。

Frédéric Hamidi answered 2020-06-24T21:03:12Z
4 votes

您可以使用str()进行强制转换,也可以使用格式化程序:

"ME%d.txt" % (num,)
nmichaels answered 2020-06-24T21:03:32Z
1 votes

这里为您的代码整体回答:

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()
Tony Veijalainen answered 2020-06-24T21:03:52Z
translate from https://stackoverflow.com:/questions/3944876/casting-an-int-to-a-string-in-python