如何在CSV解析时忽略引号内部的换行符以正确拆分字段
实现方案
标准CSV格式规范本身就允许双引号包裹的字段内包含换行符、逗号、空格,不需要自己手写字符串拆分逻辑,直接使用对应语言的标准CSV解析库即可,默认就会自动处理引号内的换行识别问题。
Python 实现示例
Python内置了csv模块,直接调用即可,无需安装额外依赖:
import csv # 读取本地CSV文件 with open('你的文件路径.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) for row in reader: # 输出的row就是你需要的字段列表 print(row) # 输出示例:['oneWordString', 'string with spaces', 'string\n with\n some, lines', 'anotherString']
如果是直接处理CSV格式字符串,也可以用以下方式实现:
import csv from io import StringIO csv_content = '''oneWordString,"string with spaces","string with some, lines",anotherString''' reader = csv.reader(StringIO(csv_content)) result = next(reader) print(result)
JavaScript(Node.js)实现示例
使用Node.js生态常用的csv-parser库即可,默认支持引号内换行处理:
const fs = require('fs'); const csv = require('csv-parser'); const results = []; fs.createReadStream('你的文件路径.csv') .pipe(csv({ headers: false })) // 不需要自动识别表头可添加该参数 .on('data', (data) => results.push(Object.values(data))) .on('end', () => { console.log(results[0]); });
注意事项
- 不要自己用
split(',')或者手动按行切割的方式处理CSV,非常容易遇到引号内特殊字符、转义字符不兼容的问题 - 如果你的CSV使用单引号包裹字段,只需要在对应解析库的配置里修改
quotechar参数为单引号即可
内容的提问来源于stack exchange,提问作者Ismael Montesinos
相关产品推荐
相关产品推荐

