CSV有20题却导成23行,怎样处理字段内换行和双引号
CSV看着有20题却被导成23行,先检查是否把物理换行当成记录边界。合法CSV字段可以包含换行、逗号和双引号,需要按CSV语法解析;逐行split或按逗号简单切分会把同一题拆开。先确定逻辑记录数,再讨论题库业务字段。
先确定文件与环境
附件是两条虚构题目记录,第一条题干含真实换行与逗号,答案含双引号。它用于CSV语法验证,不是任何产品的直接导入模板,也不宣称现有Quiz支持CSV。若产品要求Excel,应按支持格式转换并验证,不把通用CSV示例当成后台格式承诺。
操作与判断
-
保留原CSV字节副本,用文本工具查看引号包裹与转义,记录文件编码。不要在看到多行时先删除所有换行,题干本来可能需要分段,删除会改变内容。
-
使用支持CSV记录规则的解析器,按newline约定打开文件,再统计逻辑记录。第一行表头与后续记录分开,记录中含换行不会自动变成新题,空记录的处理也要有约定。
-
对每条记录核对字段数量、ID和含引号字段,至少覆盖逗号、双引号、换行三个边界。解析错误要带记录位置和原因,不能静默把多余列合并到最后一列。
-
将解析结果按目标产品支持方式导入测试副本,再读回题干和答案,检查换行与引号是否保留。语法通过不证明业务答案有效,内容审核和题型规则仍需独立检查。
输入对照与结果边界
| 输入 | CSV表示原则 | 逻辑含义 |
|---|---|---|
| 题干含换行 | 整个字段用双引号包裹 | 同一条记录 |
| 答案含双引号 | 字段内双引号重复 | 保留一个引号 |
| 普通第二题 | 正常一行 | 第二条记录 |
verify.py实际读取multiline.csv,输出两条逻辑记录,并确认第一条包含换行、逗号与引号。物理文本行数大于记录数是合法现象,不是文件损坏。RFC4180描述一种常见CSV格式,实际接收方可能有不同dialect,应把分隔符、编码与换行方式作为明确契约。
下载并复核
下载multiline.csv与verify.py,先运行只读解析观察physical_lines与logical_records。正式文件应同时保存原件与解析错误报告;若使用表格软件重存,还需确认它没有改变编码、日期、前导零或换行。不要为了“每题一行”把有意义的题干分段全部替换为空格。
已实际用csv.DictReader解析两条记录,并确认字段内换行和引号保留。未导入Quiz或任何真实题库。
失败时怎样继续
记录数正确但字段错位,检查分隔符、引号闭合和转义;只有某一题失败时将最小反例单独留存。若目标产品不允许字段内换行,应在内容规则明确替代表示,而不是让解析器随机拆题。数据中出现公式样式文本时也要按接收系统的纯文本约定处理,不能自动执行内容。
交付应给出逻辑记录数量、字段定义和边界样例,接收方以解析与读回结果核对。模板版本与目标产品导入格式分开登记,避免后续换工具又回到逐行拆分。本文完成语法层解析,没有连接实际题库后台,也没有验证题目内容或正确答案。
相关背景可看答题题库怎么设计?题型/难度/分值与导入实操,继续从多媒体播放专题查找相关流程;需要结合项目确认时可查看工程对接咨询。
一级出处
来源核对日期:2026-10-24。来源支持所述机制;本文合成输入与本地计算只证明所列文件及算法,不代表目标软件或现场设备已验收。
相关阅读
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。