【问题标题】:Python convert JSON to CSV ignoring "\n"Python 将 JSON 转换为 CSV 忽略 "\n"
【发布时间】:2021-06-20 12:28:06
【问题描述】:

对于我的大学项目,我必须使用 API 从 github 收集一些数据。我将 api 调用的结果保存到 json 文件中,然后我必须将 json 文件转换为 csv 文件。

我使用以下代码将 json 文件转换为 csv:

with open ("data.json", "r") as f:
  data = json.load(f)

with open('data.csv', 'w') as f:
  fieldnames = data[0].keys()
  writer = csv.DictWriter(f, fieldnames=fieldnames)
  writer.writeheader()
  for res in range(len(data)):
    writer.writerow(data[res])

我的问题是在 json 文件中我有一些键/值对,如下所示:

"title" : "Hello \n World"

我认为“\n”被视为换行符,因为它会拆分我的 csv 文件的行。如何解决这个问题?无论如何让我的代码忽略“\n”?

bad output

output that i want

【问题讨论】:

  • 以下是一些为反斜杠特殊字符添加转义的提示:stackoverflow.com/questions/18935754/…
  • csv 模块应该正确处理这个问题。 您正在寻找的输出是什么?有什么问题?
  • 您是否真的尝试过并检查您的输出以查看确切的行为?
  • 如果整个 json 文件中没有“\ n”,我的将 JSON 转换为 CSV 的代码可以正常工作。问题是,例如,如果我有一个包含 2 个对象的 json 文件,则 csv 文件总共必须有 3 行(标题为 1,对象为 2)。如果在 json 文件中我有“\ n”,这将在“\ n”处划分 csv 文件中的行,从而在输出中获得 csv 中不代表对象数量的行数,因为对象包含“\n”的会分成两行
  • 我添加了两个示例图像,向您展示我得到的输出和我想要得到的输出

标签: python json csv


【解决方案1】:

pandas 可以处理这个:

import pandas as pd

df = pd.read_json('data.json')
df.to_csv('data.csv')

或者由于您是在 Excel 中打开文件,您可以直接写信给xlsx

df.to_excel('data.xlsx')

如果您仍希望删除换行符,您可以在保存数据帧之前使用任何these 解决方案。

【讨论】:

    【解决方案2】:

    你检查过 string.replace() 方法比如 mystring.replace('\n', ' ') 吗?

    【讨论】:

    • 这可能是一个解决方案,但我正在寻找一种不会强迫我使用 for 循环并遍历我的所有 json 对象来进行替换的东西,因为在我的最终项目中我会必须处理数百万个对象,并且执行 for 循环可能会很昂贵
    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 2016-10-20
    • 2018-01-04
    • 2023-03-03
    • 2019-02-23
    • 2020-05-31
    • 2021-09-01
    • 2021-08-21
    相关资源
    最近更新 更多