You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在保存JSON Lines文件时保留双引号转义符?

解决JSONL文件读取与保存时保留转义符的问题

问题原因

pandas读取JSONL时,会自动解析JSON语法中的转义符(比如\"),将其转换为字符串实际包含的双引号,所以DataFrame中存储的text字段值是II. Firtos. Jelige: "Vándor daruid V betűje szállt.",而非带有转义符的版本。你之前手动拼接JSON字符串的方式,没有对字符串中的双引号重新转义,导致输出的JSONL缺少必要的转义符。

解决方案

不要手动拼接JSON字符串,改用Python标准库的json.dumps()方法序列化每一条记录,它会自动处理字符串中需要转义的字符(比如双引号),保证输出的JSONL格式完全符合要求。

修改后的代码

import json
import os
from tqdm import tqdm
from PIL import Image
import pandas as pd

def load_jsonl1():
    return pd.read_json(
        path_or_buf='input.jsonl',
        lines=True,
    )

df1 = load_jsonl1()
output_path = 'output.jsonl'
path = '你的图片目录路径'  # 替换为实际路径
aug_imgs = '你的增强图片保存目录'  # 替换为实际路径
sample_amount = 5  # 替换为实际的增强样本数

# 写入output.jsonl文件
with open(output_path, 'w', encoding='utf-8') as outfile:
    for idx in tqdm(range(len(df1))):
        image_path = os.path.join(path, df1['file_name'][idx])
        image = Image.open(image_path).convert("RGB")
        for i in range(sample_amount):
            augmented_image = augment_img(image)
            augmented_image_path = os.path.join(aug_imgs, f'aug_{idx * sample_amount + i}.jpg')
            augmented_image.save(augmented_image_path)
            
            # 构造记录字典,用json.dumps序列化
            record = {
                'file_name': os.path.basename(augmented_image_path),
                'text': df1['text'][idx]
            }
            # 序列化后写入,自动处理转义
            outfile.write(json.dumps(record, ensure_ascii=False) + '\n')

关键说明

  1. json.dumps()的作用:它会将Python字典转换为符合JSON规范的字符串,自动对字符串中的双引号添加转义符\,同时保留特殊字符(比如匈牙利语中的带重音字符)。
  2. ensure_ascii=False参数:确保输出的JSON字符串保留非ASCII字符(如á、ű),不会被转义为Unicode编码。
  3. 修正变量名:原代码中误用了df,替换为实际的DataFrame变量df1。

内容的提问来源于stack exchange,提问作者Mohammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 06:10:21