![[Question]: Letter 'n' missing when parsing documents](https://www.chat-gpts.plus/wp-content/uploads/2026/07/8724-b12951ff.jpg)
[Question]: Letter ‘n’ missing when parsing documents
快速结论:该问题通常在使用 RAGFlow Python API 创建数据集并配置 parser_config 中的 delimiter 参数时触发。优先检查 delimiter 中是否使用了双反斜杠(如 "\\\\n"),这会导致后端将 \\n 解释为字面量反斜杠加字母 ‘n’,从而在解析时错误地剥离文档中的字母 ‘n’。
问题场景
用户使用 RAGFlow 的 Python API 创建数据集(dataset)时,通过 parser_config 自定义文档解析分隔符(delimiter),或者完全不指定 parser_config 使用默认值。预期按换行符(\n)分割文档,但实际解析后文档中的字母 ‘n’ 被无故剥离。问题可影响 Markdown 及其他所有文档类型。
报错原文
When I use the python api to create dataset, either
1. i specify parser_config and cannot parse documents(.md) at all (delimiter: '\n')
2. i don't specify parser_config and the parsed documents strips letter 'n' (delimiter: '\\n')
原因分析
根本原因是 RAGFlow 对 parser_config 中 delimiter 参数的转义序列处理不一致。
- 如果在 Python 代码中设置
delimiter = "\\n",Python 解释器会将其解释为一个真正的换行符(单反斜杠 + n),这是正确的用法,可以按换行分割文档。 - 如果错误地设置了
delimiter = "\\\\n"(双反斜杠),Python 传递的实际字符串是字面量反斜杠后跟字母 ‘n’(即\n文本)。RAGFlow 后端不会对转义序列进行标准化,它会按字面量字符串分割,即把字母 ‘n’ 作为分隔符,导致所有 ‘n’ 字符被移除。 - 不指定
parser_config时,默认 delimiter 可能也被错误解释,引发相同问题。
这是已知代码缺陷(参见 #8668),后端未对 delimiter 字符串做转义序列的统一转换或标准化。
环境排查
- 确认 Python 客户端中传递的
parser_config里delimiter的原始字符串值(建议打印并检查反斜杠数量) - 确认 RAGFlow 版本(避免编写版本号,但可参考 Issue 讨论中的已知缺陷)
- 确认受影响文件类型(不限于 Markdown)
解决步骤
- 检查 Python 代码中的 delimiter 设置:始终使用
"delimiter": "\\n"(单反斜杠),让 Python 将其解释为换行符。不要写成"\\\\n"(双反斜杠)。 - 建议打印出实际发送给 API 的
parser_configJSON 字符串,确认delimiter字段值为"\\n"(在 JSON 中表示一个换行符)。 - 如果完全不指定
parser_config仍然出现问题,可尝试显式设置正确的delimiter以覆盖可能的错误默认值。 - 此问题已记录为已知缺陷,可关注后续版本修复。当前通过步骤 1 和 2 可有效规避(可优先尝试)。
# 正确示例
parser_config = {
"delimiter": "\n" # 在 Python 字符串中只有一个反斜杠
}
# 错误示例(会导致字母 n 被剥离)
parser_config = {
"delimiter": "\\n" # 双反斜杠,实际传递的是字面量 \n
}
验证方法
使用修正后的 delimiter 重新创建数据集并解析一个包含字母 ‘n’ 的测试文档(如 Markdown 或纯文本)。解析完成后,检查文档内容中所有字母 ‘n’ 是否完整保留,并且文档是否按预期换行符正常分割段落。



