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

移除JIRA导出JSON字段中的\n换行符,解决DataFrame解析异常

解决JIRA JSON字段换行符问题及文件读取错误

一、先修复strip()调用错误

你之前的代码报错是因为inputfile是文件对象,不是字符串,不能直接调用strip()。得先把文件内容读取成字符串再处理:

with open(fInput, encoding='utf-16') as inputfile:
    # 读取文件全部内容为字符串
    content = inputfile.read()
    # 此时可以用strip()清理文本首尾的空白
    content = content.strip()

二、移除JSON字段里的换行符

有两种实用方法,按需选择:

方法1:全局替换(简单粗暴,适合快速处理)

如果不需要保留任何换行符,读取内容后直接全局替换\n:

import json

with open(fInput, encoding='utf-16') as inputfile:
    # 读取并替换所有换行符
    content = inputfile.read().replace('\n', '')
    jira_data = json.loads(content)

这种方法会去掉所有换行(包括JSON结构里的换行,但JSON解析不依赖格式换行,所以不影响),适合字段值里的换行需要全部清除的场景。

方法2:解析后精准清理(保留JSON结构,更灵活)

如果只想清理字段值里的换行,不破坏JSON的层级结构,用递归遍历处理更稳妥:

import json
import pandas as pd

with open(fInput, encoding='utf-16') as inputfile:
    jira_data = json.load(inputfile)

# 递归遍历所有元素,清理字符串类型值的换行
def clean_newlines(obj):
    if isinstance(obj, str):
        # 替换换行符为空,再清理首尾空白
        return obj.replace('\n', '').strip()
    elif isinstance(obj, dict):
        return {k: clean_newlines(v) for k, v in obj.items()}
    elif isinstance(obj, list):
        return [clean_newlines(item) for item in obj]
    else:
        return obj

# 得到清理后的数据
cleaned_data = clean_newlines(jira_data)

# 提取issues列表转换为DataFrame
df = pd.DataFrame([issue['fields'] for issue in cleaned_data['issues']])

这种方法会自动处理嵌套的字段(比如示例里的summary),只清理字符串内容里的换行,不影响其他类型的字段(比如null、数字)。

完整可运行代码

import json
import pandas as pd

# 替换成你的文件路径
fInput = "jira_response.txt"

# 读取JSON文件
with open(fInput, encoding='utf-16') as inputfile:
    jira_data = json.load(inputfile)

# 递归清理字段中的换行符
def clean_field_values(obj):
    if isinstance(obj, str):
        return obj.replace('\n', '').strip()
    elif isinstance(obj, dict):
        return {key: clean_field_values(value) for key, value in obj.items()}
    elif isinstance(obj, list):
        return [clean_field_values(item) for item in obj]
    else:
        return obj

cleaned_jira_data = clean_field_values(jira_data)

# 转换为DataFrame
df = pd.DataFrame([issue['fields'] for issue in cleaned_jira_data['issues']])
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:00:53