Python调用Twitter API导出CSV时如何将拆分的多行推文合并为单行
问题描述
使用Python调用Twitter API采集推文时,接口返回的推文text字段格式示例如下:
'text': 'Sentence 1 of the tweet that needs ' 'to continue onto the second line.\n' '\n' 'Sentence 2 etc etc etc'
写入CSV的要求为每条推文单独占据一行。
最初的处理逻辑是在写入前对text字段调用.strip()方法,但处理后文本内部的换行符并未被清除,最终导出的CSV出现行错乱问题。最初误判问题诱因是Python自动将多行字符串拆分为多个单引号包裹的片段,目标是找到将所有推文文本合并为单行的实现方案。
最初编写的存在缺陷的CSV写入代码:
fieldnames = results["data"][0].keys() with open("file.csv", "w") as f: writer = csv.DictWriter(f, fieldnames=fieldnames) for tweet in results["data"]: tweet["text"] = tweet["text"].strip() writer.writerow(tweet)
可行方案
问题根因:.strip()方法仅会移除字符串首尾的空白字符(包含首尾的换行、空格、制表符等),不会处理字符串内部的换行符,这才是导致CSV行错位的核心原因。
使用.replace()方法替换掉文本中所有的换行符即可实现单行文本效果,跳过csv写入实例、直接向文件写入内容的可运行代码如下:
with open("file.csv", "w") as f: for tweet in results["data"]: tweet["text"] = tweet["text"].replace("\n", "") f.write(tweet["text"] + '\n')
如果需要保留CSV多字段写入的能力,无需放弃
csv模块,仅需将原有代码中的.strip()替换为.replace("\n", ""),即可正常使用csv.DictWriter完成写入,不会出现行错乱问题。
内容的提问来源于stack exchange,提问作者Gabe
相关产品推荐
相关产品推荐

