Twint导出的.csv文件加载到pandas dataframe出现ParserError报错求助
报错根源
你遇到的解析错误核心是Twint导出CSV时没有正确转义特殊字符:推文内容里的逗号、换行符没有被双引号包裹,pandas默认按逗号切割字段时,就会把单条推文里的逗号识别成字段分隔符,导致行字段数和表头预期的字段数不匹配,就触发了Expected 1 fields in line 3, saw 3的报错。你观察到的整行数据挤在一个单元格、内容错位的问题也是同一个原因导致的。
解决方案
按优先级排序可以选择以下方法:
重新导出规范CSV(根源解决)
运行Twint爬取时新增CSV转义配置,强制所有字段用双引号包裹,自动转义内容中的特殊字符:import twint c = twint.Config() # 保留你原有爬取配置不变,新增以下两项 c.Store_csv = True c.Output = "demo_fixed.csv" c.csv_quotes = '"' c.escape_csv = True twint.run.Search(c)新导出的文件可以直接用
pd.read_csv("demo_fixed.csv")正常读取。现有损坏CSV临时读取
如果无法重新爬取,可以调整pandas读取参数跳过错误行,或者手动指定列名强制解析:import pandas as pd # 简易方案:跳过字段数不匹配的坏行 scrapedData = pd.read_csv('demo.csv', quotechar='"', on_bad_lines='skip', encoding='utf-8') # 更稳妥方案:手动指定Twint默认全部字段名,强制对齐解析 cols = ['id', 'conversation_id', 'created_at', 'date', 'time', 'timezone', 'user_id', 'username', 'name', 'place', 'tweet', 'language', 'mentions', 'urls', 'photos', 'replies_count', 'retweets_count', 'likes_count', 'hashtags', 'cashtags', 'link', 'retweet', 'quote_url', 'video', 'thumbnail', 'near', 'geo', 'source', 'user_rt_id', 'user_rt', 'retweet_id', 'reply_to', 'retweet_date', 'translate', 'trans_src', 'trans_dest'] scrapedData = pd.read_csv('demo.csv', names=cols, header=0, on_bad_lines='skip', encoding='utf-8')
内容的提问来源于stack exchange,提问作者Kynan E
相关产品推荐
相关产品推荐

