Python - TypeError:无法隐式地将'int'对象转换为str

时间:2013-10-29 18:25:38

标签: python

我尝试写一个文件,但是python给了我一个错误。

f.write('20/10/2013;SP;83428407;10:00;-;10:30;'.format(random.randrange(0,6))+';'.format(random.randrange(0,6))+';:00:15;:03:12;;;0;2;:00:58;50,0;2;0;0;0;0;0;0;0;0;0'+'\n')

也可以尝试使用str()

# f.write('20/10/2013;SP;83428407;10:00;-;10:30;'+str(random.randrange(0,6))+';'+str(random.randrange(0,6))+';:00:15;:03:12;;;0;2;:00:58;50,0;2;0;0;0;0;0;0;0;0;0'+'\n')

同样的错误:

TypeError: Can't convert 'int' object to str implicitly

2 个答案:

答案 0 :(得分:1)

您的第一行缺少格式占位符:

f.write('20/10/2013;SP;83428407;10:00;-;10:30;{};{};:00:15;:03:12;;;0;2;:00:58;50,0;2;0;0;0;0;0;0;0;0;0\n'.format(
    random.randrange(0,6), random.randrange(0,6)))

{}填充的str.format()占位符。请注意,您只需要一个字符串,并使用占位符来填充str.format()的参数。

演示输出:

>>> import random
>>> '20/10/2013;SP;83428407;10:00;-;10:30;{};{};:00:15;:03:12;;;0;2;:00:58;50,0;2;0;0;0;0;0;0;0;0;0\n'.format(
...     random.randrange(0,6), random.randrange(0,6))
'20/10/2013;SP;83428407;10:00;-;10:30;0;5;:00:15;:03:12;;;0;2;:00:58;50,0;2;0;0;0;0;0;0;0;0;0\n'
>>> '20/10/2013;SP;83428407;10:00;-;10:30;{};{};:00:15;:03:12;;;0;2;:00:58;50,0;2;0;0;0;0;0;0;0;0;0\n'.format(
...     random.randrange(0,6), random.randrange(0,6))
'20/10/2013;SP;83428407;10:00;-;10:30;3;1;:00:15;:03:12;;;0;2;:00:58;50,0;2;0;0;0;0;0;0;0;0;0\n'

答案 1 :(得分:0)

您的字符串在某种程度上看起来格格不入 - 如果您要在字符串之间附加randrange值,则需要在格式的两边添加“+”。

f.write('20/10/2013;SP;83428407;10:00;-;10:30;'+str(random.randrange(0,6))+';'+str(random.randrange(0,6))+';:00:15;:03:12;;;0;2;:00:58;50,0;2;0;0;0;0;0;0;0;0;0\n')

通常更清楚的是创建一个字符串并显式插入值。

f.write('20/10/2013;SP;83428407;10:00;-;10:30;%s;%s;:00:15;:03:12;;;0;2;:00:58;50,0;2;0;0;0;0;0;0;0;0;0\n' % (str(random.randrange(0,6)), str(random.randrange(0,6))))

如果您想要进行任何类型的字符串格式化或对齐值,这也使您能够控制输出。