`for i in urls:
text=fetch_text(i)
listToStr = ' '.join([str(elem) for elem in text])
result = re.sub(r'<.*?>', '', listToStr)
basename = "file_"
file_name = ["{}_{}.txt".format(basename, j) for j in range(37,151)]
with open(file_name[i], 'w') as f: ---->Error
f.write(result)`
我写了上面的代码,通过每个URL获取数据,并希望为每个URL数据创建一个单独的文件;与开放的线路。。对于file_name;列表索引必须是整数或切片,而不是str"。。。有人能帮我渡过难关吗?
您需要添加一个循环来迭代file_name
然后,我将urls
的迭代变量更改为url
,而不是i
,因为i
应该用于索引,而这里您直接迭代元素。
现在,在您的情况下,每个url都有一个结果,但您在每个url中生成了多个文件,并将相同的结果存储在这些文件上。这看起来是错误的,所以你应该真正检查你的循环的逻辑
for i, url in enmerate(urls):
text=fetch_text(url)
listToStr = ' '.join([str(elem) for elem in text])
result = re.sub(r'<.*?>', '', listToStr)
basename = "file_"
file_name = f"{basename}_{i+37}.txt"
with open(file_name, 'w') as f:
f.write(result)