.join()函数返回int而不是str。什么地方出了错?

时间:2012-12-26 02:31:13

标签: python join typeerror

index = 0
manage = {}
filedata = open(custom_path,'r')
for status in filedata:
    manage[index] = status
    print manage[index]
    index += 1

以上print manage [index]的输出正确,显示:

yes

yes

yes

yes

yes

然后,我添加了一个新行:     manage = str(u'\ n,'。join(manage))

并收到以下错误:

TypeError: sequence item 0: expected string, int found

将我的代码更改为:

values = ','.join(str(status) for status in manage)

print values

得到以下输出(这是错误的):

0,1,2,3,4

我在期待:是​​的,是的,是的,是的,是的

知道我哪里出错了?

3 个答案:

答案 0 :(得分:1)

您正在迭代字典中的键而不是值。

尝试更改此行:

values = ','.join(str(status) for status in manage)

To This:

values = ','.join(val.rstrip("\n") for val in manage.values())

这也是您收到该错误的原因,因为您尝试使用密钥。

答案 1 :(得分:1)

这是因为管理是一个字典而不是列表,如

中所定义
manage = {}

答案 2 :(得分:1)

manage是一个包含整数键的字典。 for循环遍历字典键。将其更改为:','.join(line.strip() for line in manage.values())