'Int'对象不可迭代.但是,它是一个字符串

zur*_*fyx 1 python for-loop

这是脚本的一部分.它应该在名称之前得到数字,这些数字将始终相同(在这种情况下cows)

cows = "111 cows 222 cows "
for cow in cows.find(" cows "):
    startingpos = cow-4
    print(cows[startingpos:cow])
Run Code Online (Sandbox Code Playgroud)

结果应该是:

111 
222
Run Code Online (Sandbox Code Playgroud)

但是,我得到了

TypeError: 'Int' object is not iterable
Run Code Online (Sandbox Code Playgroud)

即使cows是一个字符串,而不是一个整数,为什么?

Ale*_*ler 7

str.find()返回一个int,而不是一个str.

请尝试以下方法:

cows = "111 cows 222 cows "
print cows.split(" cows ") # this prints ['111', '222', '']
Run Code Online (Sandbox Code Playgroud)

最后一个空条目可能不受欢迎,可以轻松删除:

cows = "111 cows 222 cows "
cows_lst = [cow for cow in cows.split(" cows ") if cow]
print cows_lst # now it prints ['111', '222']
Run Code Online (Sandbox Code Playgroud)