csv.writerow 在添加 for 循环后现在可以工作了吗?
Posted
技术标签:
【中文标题】csv.writerow 在添加 for 循环后现在可以工作了吗?【英文标题】:csv.writerow now working after adding for-loop? 【发布时间】:2021-05-27 19:07:12 【问题描述】:如果它与某些关键字匹配,我会将推文状态数据写入 csv 文件。当我有这个初始 on_status 代码时,csvwrite 运行良好:
def on_status(self, status):
# Creating this formatting so when exported to csv the tweet stays on one line
tweet_text = "'" + status.text.replace('\n', ' ') + "'"
# Filter for keyword, only write csv if correct keyword(s) found
csvw.writerow([status.id,
status.user.screen_name,
status.created_at.strftime('%d/%m/%y'),
status.user.followers_count,
tweet_text])
return True
但是,当我使用 filterKeyword 添加 for 循环时,csvwrite 不会填满。 csv 文件完全为空,没有任何值。但它确实会打印出“通过关键字找到推文:+ 字”和“在 csvw 之后”部分。不能为我的生活正确调试这个..
def on_status(self, status):
# Creating this formatting so when exported to csv the tweet stays on one line
tweet_text = "'" + status.text.replace('\n', ' ') + "'"
# Filter for keyword, only write csv if correct keyword(s) found
for word in filterKeywords:
if word in tweet_text:
print("Found tweet by keyword: " + word)
csvw.writerow([status.id,
status.user.screen_name,
status.created_at.strftime('%d/%m/%y'),
status.user.followers_count,
tweet_text])
print("after csvw")
return True
非常感谢任何帮助!
【问题讨论】:
定义“csvwrite 不工作”。会发生什么? csv 文件仍然是空的,根本没有填充任何值。 好像根本没有调用 csv.writerow。 作为健全性检查,在声明print(id(csvw.writerow))
时将其放入 main 中,然后再将其放入 on_status()
中,以查看它们是否是相同的对象 ID。
好点,现在我检查了它们是不同的 id - 怎么会?由于它在第一种情况下工作,所以当我添加 for & if 循环时,对象 ID 会以某种方式发生变化。这怎么可能?怎么修? - 是难题
【参考方案1】:
csvw
似乎超出了您在 main 中实例化它的范围,因此请尝试在您的函数中添加 global csvw
声明:
def on_status(self, status):
# add this line
global csvw
...
【讨论】:
以上是关于csv.writerow 在添加 for 循环后现在可以工作了吗?的主要内容,如果未能解决你的问题,请参考以下文章
NSMutableArray 在 for 循环后不保存添加的项目