Python处理含逗号列的小说文本CSV文件技术问询
解决Pandas处理含逗号的CSV字段问题
嘿,这个问题我碰到过好多次了——当CSV里的字段包含分隔符(比如你这里content列里的逗号)时,pandas默认的read_csv确实会搞砸列的识别,导致数据错位或者报错。别慌,给你几个靠谱的解决方案:
解决方案1:让Pandas识别引号包裹的字段
如果你的CSV文件里,包含逗号的content字段是用双引号(或单引号)包裹的(规范的CSV通常会这么做),直接在read_csv里指定quotechar参数就能解决:
import pandas as pd # 假设字段用双引号包裹 df = pd.read_csv('your_file.csv', quotechar='"') # 如果是单引号包裹,就改成quotechar="'"
这样Pandas就会把引号内的内容当成一个完整字段,不管里面有多少逗号,不会把它们当成列分隔符。
解决方案2:用Python内置CSV模块预处理
如果你的CSV是不规范的(比如包含逗号的字段没加引号),可以先用Python原生的csv模块读取,手动合并被拆分的content字段,再转成DataFrame:
import pandas as pd import csv # 定义CSV的字段名 fieldnames = ['book_id', 'title', 'content'] rows = [] with open('your_file.csv', 'r', encoding='utf-8') as f: # 用csv.reader读取,指定分隔符为逗号 reader = csv.reader(f, delimiter=',') # 如果你的CSV有表头,先跳过表头:next(reader) for row in reader: # 逻辑:book_id是第1列,title是第2列,剩下的所有列合并成content book_id = row[0] title = row[1] content = ','.join(row[2:]) rows.append({'book_id': book_id, 'title': title, 'content': content}) # 转成DataFrame df = pd.DataFrame(rows)
这个方法适合完全不规范的CSV,手动控制每一列的归属,确保content字段完整还原。
解决方案3:确认并指定正确的分隔符
如果你的CSV其实不是用逗号分隔(比如误用了分号、制表符),那直接指定sep参数即可:
# 比如分隔符是分号 df = pd.read_csv('your_file.csv', sep=';') # 如果是制表符,用sep='\t'
不过看你的示例数据,应该是逗号分隔的场景,这个方案可以作为排查方向。
内容的提问来源于stack exchange,提问作者add-semi-colons
相关产品推荐
相关产品推荐

