【问题标题】:Commas in tweets ruining my data files推文中的逗号破坏了我的数据文件
【发布时间】:2018-08-11 11:42:13
【问题描述】:

我使用这段代码已经有一段时间了,我遇到的问题是当我从 Twitter API 中提取时,逗号分隔了我的 CSV 文件中的单元格。 Twitter 给你的一些推文和一些数据包含逗号,所以我的单元格最终位于不同的列上。例如,一条推文的文本可能在第三列,而另一条推文的文本可能在第三、第四和第五列。我需要一些方法来解决这个问题。

这是我的代码:

class listener(StreamListener):

    def on_data(self, data):
        # Check for a field unique to tweets (if missing, return immediately)
        if "in_reply_to_status_id" not in data:
            return
        with open("trump.csv", 'a') as saveFile:
            try:
                saveFile.write(json.dumps(data.replace(",",",")) + "\n")


            except (BaseException, e):
                print ("failed on data", str(e))
                time.sleep(5)
            return True
    def on_error(self, status):
        print (status)

【问题讨论】:

  • 请贴一个这样的csv文件的例子,如果我有更多的信息,我想我可以帮助你!
  • 为什么不使用the CSV module,它将引用包含分隔符的字段?这是处理可能包含您正在使用的分隔符的列的标准解决方案。或者,您可以切换到 不会 出现在数据中的分隔符(不过,在推文的情况下很棘手)。

标签: python api twitter streaming


【解决方案1】:

首先,可以通过将引用块中的逗号视为块的一部分来生成 csv,请参阅this post。 它有两个答案,一个使用双引号,另一个使用倒置,我不确定实际的答案是什么。

import csv

with open('trump.csv', 'rb') as inputfile:
    rows = csv.reader(inputfile, delimiter=',', quotechar='`')
    for row in rowreader:
        print row

如果这不适用并且您需要从文件中完全删除逗号,请执行以下操作:

with open("trump.csv") as inputfile, open("output.csv", "w") as outputfile:
    for line in inputfile:
        outputfile.write(line.replace(",", ""))

或者无论您的输入是什么,您都可以操作字符串并用逗号替换空格。

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    相关资源
    最近更新 更多