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 循环后现在可以工作了吗?的主要内容,如果未能解决你的问题,请参考以下文章

Web scraper / CSV未以正确的格式保存

NSMutableArray 在 for 循环后不保存添加的项目

使用 PostgreSQL PL/pgSQL 在 For 循环中添加月份

Navicat for MySQL循环添加大量数据用啥

在 for 循环中添加整数并打印总数

如何在 Jinja python 的 for 循环中添加变量