【问题标题】:Python + Pandas get JSON data from multiple URLs to write CSV in separate columns with semi colon as separatorPython + Pandas 从多个 URL 获取 JSON 数据以将 CSV 写入单独的列中,以分号作为分隔符
【发布时间】:2020-12-08 06:06:44
【问题描述】:

我可以获取一些数据并写入 CSV ,但数据放在一列中。我无法使用 columns = ["code", "img", "data"]) 作为标题。不确定这是否与我之前修复的索引问题有关(如果使用所有标量值,则值错误,您必须传递一个索引。)

所以我不知道索引的东西现在是否会导致写入正确 CSV 的问题,但我找不到任何信息。

基本上只想

  • 把标题"code","img","data"
  • 将每列中的每个数据分开,
  • 使用分号;作为分隔符**
  • 要调用多个 URL:urllib.request.urlopen("https://barcode.monster/api/3061990141101", https://barcode.monster/api/3061990141101","https://barcode.monster/api/3061990141101") 作为 url's

我的脚本:

import urllib.request, json, csv
import pandas as pd

with urllib.request.urlopen("https://barcode.monster/api/3061990141101") as url:
    data = json.loads(url.read().decode())

    # print(data)
with open('data.json', 'r') as f:

    data = json.load(f)

    df = pd.DataFrame(
        {'test': data})

    df.to_csv('test.csv', encoding='utf-8', index=False)

当我在记事本中打开 csv 时,总共有 9 行。:

test 
EAN13 
3061990141101 
mini BN Chocolate flavour - 25 biscuits (5 paquets)
https://courses-en-ligne-now.com/.jpg

所以这意味着这个数组只有一列,而且都在一列中。我想要的只是 3 行(或更多)行:

code | img | data | (more later)
----------------------------------------------------------------------
EAN13 | 3061990141101 | mini BN Chocolate flavour - 25 biscuits (5 paquets) | https://courses-en-ligne-now.com/media/Photosite/3061990141101_PHOTOSITE_20180726_045123_0.jpg

...如果我在记事本中打开它,我只会看到 2 行,并且每个数据将用分号分隔。

任何帮助将不胜感激。

【问题讨论】:

  • 请让您的预期输出更加明确。你只想要三列?实际数据有class, code, company, description, image_url, size 作为键。再次,请发布您希望数据看起来像表格的方式。作为旁注,我想知道你是否真的需要 Pandas 来做这件事。看来你可以在 python 中工作。

标签: python json python-3.x pandas dataframe


【解决方案1】:

试试这个,

import requests

urls = ["https://barcode.monster/api/3061990141101",]

result = []
for url in urls:
    resp = requests.get(url)
    if resp.status_code != 200:
        print(f"Error {url}")
        continue

    result.append(resp.json())

pd.DataFrame(result).to_csv('test.csv', encoding='utf-8', index=False, sep=";")

   class           code  ... size  status
0  EAN13  3061990141101  ...       active

【讨论】:

  • 谢谢@sushanth,这是一个完美的修复,就像一个魅力
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2014-11-15
  • 2020-03-09
相关资源
最近更新 更多