Преобразование файлов CSV в JSON

Я столкнулся с некоторыми трудностями при преобразовании моего CSV-файла в формат JSON: Мой CSV находится в следующем порядке с интервалом TAB, где "label" и "tweet" - это имя столбца, и с интервалом TAB.

label                tweet
0                    I love you Sydney #Sydneycafeseige 
1                    Please do not use today as an excuse

Но мне нравится конвертировать данные в следующий формат JSON в файле JSON

{"tweet": " I love you Sydney #Sydneycafeseige", "label": 0}
{"tweet": "Please do not use today as an excuse ", "label": 0}
{"tweet": "Outrage as bystanders", "label": 0}
{"tweet": "This man carries a gun ", "label": 0}

Я пытался использовать этот скрипт, но не работал:

import csv
import json

csvfile = open('D:\\datasets\\wazeed\\sts_gold_tweet.csv', 'r')
jsonfile = open('D:\\datasets\\wazeed\\file.json', 'w')

fieldnames = ("label","tweet")

reader = csv.DictReader( csvfile)

for row in reader:
  json.dump(row, jsonfile)
  jsonfile.write('\n')

Что ты пробовал?

Chiheb Nexus 29.05.2018 00:25

@WazedAli, Если вы можете отредактировать свой вопрос и точно указать проблему с вашей последней попыткой, мы более чем готовы помочь.

jpp 29.05.2018 00:31

Можете ли вы проверить сейчас

Wazed Ali 29.05.2018 00:42

@coldspeed, повторное открытие, поскольку OP теперь предоставил некоторый соответствующий код.

jpp 29.05.2018 01:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
146
1

Ответы 1

С этими проблемами, если вы сомневаетесь, вы можете использовать csv.reader напрямую, что дает больший контроль при построении вашего списка словарей. Затем используйте json.dump за один вызов.

Вот демонстрация:

from io import StringIO
import csv, json

mystr = StringIO("""label\ttweet
0\tI love you Sydney #Sydneycafeseige
1\tPlease do not use today as an excuse""")

data = []

# replace mystr with open('file.csv', 'r')
with mystr as f:
    reader = csv.reader(f, delimiter='\t')
    headers = next(reader)
    for line in reader:
        data.append({headers[0]: int(line[0]), headers[1]: line[1]})

with open('file.json', 'w') as fout:
    json.dump(data, fout)

with open('file.json', 'r') as fin:
    d = json.load(fin)

print(d)

[{'label': 0, 'tweet': 'I love you Sydney #Sydneycafeseige'},
 {'label': 1, 'tweet': 'Please do not use today as an excuse'}]

Спасибо большое, все работает, как вы сказали. но можно было бы сделать вывод без штрихов '[' и ']' в начале и конце, а также без 'запятой' между массивом json.

Wazed Ali 29.05.2018 02:02

Другие вопросы по теме