我怎么能像我想要的那样在JSON中转换CSV

fdx2calv  于 2022-12-24  发布在  其他
关注(0)|答案(3)|浏览(138)

你好我告诉你我的问题:
我的权利,为转换我的csv在json。但结果并不完全是我想要的。

    • 主文件. py**
import csv
 
filename ="forcebrute.csv"
 
# opening the file using "with"
# statement
with open(filename, 'r') as data:
  for line in csv.DictReader(data):
      print(line)
    • csv格式**
name;price;profit

Action-1;20;5

Action-2;30;10

Action-3;50;15

Action-4;70;20

Action-5;60;17
    • 我的结果**:
{'name;price;profit': 'Action-1;20;5'}

{'name;price;profit': 'Action-2;30;10'}

{'name;price;profit': 'Action-3;50;15'}

{'name;price;profit': 'Action-4;70;20'}

{'name;price;profit': 'Action-5;60;17'}
    • 我想要这个结果:**

w6lpcovy

w6lpcovy1#

您需要指定列分隔符,然后可以使用 * json. dumps()* 提供所需的输出格式

import csv
import json

with open('forcebrute.csv') as data:
    print(json.dumps([d for d in csv.DictReader(data, delimiter=';')], indent=2))
    • 输出:**
[
  {
    "name": "Action-1",
    "price": "20",
    "profit": "5"
  },
  {
    "name": "Action-2",
    "price": "30",
    "profit": "10"
  },
  {
    "name": "Action-3",
    "price": "50",
    "profit": "15"
  },
  {
    "name": "Action-4",
    "price": "70",
    "profit": "20"
  },
  {
    "name": "Action-5",
    "price": "60",
    "profit": "17"
  }
]
jbose2ul

jbose2ul2#

您需要使用csv库中的Dictreader来读取CSV文件的内容,然后在使用json.dumps将数据转换为JSON之前将内容转换为列表。

import csv
import json

filename ="forcebrute.csv"

# Open the CSV file and read the contents into a list of dictionaries
with open(filename, 'r') as f:
   reader = csv.DictReader(f, delimiter=';')
   csv_data = list(reader)

# Convert the data to a JSON string and print it to the console
json_data = json.dumps(csv_data)
print(json_data)
neekobn8

neekobn83#

一个简单的方法是使用Pandas,处理大的csv文件也相当快。它可能需要一些调整,但你明白了。

import pandas as pd
import json

df = pd.read_csv(filename, sep = ';')
data = json.dumps(df.to_dict('records'))

相关问题