Как написать пакетный код Python для преобразования json в html?

У меня есть 300 + json файлов.

Структура такая:

{
  "body_html": "<div><head></head><body><div class=\"lake-content-editor-core lake-engine lake-typography-traditional\" data-lake-element=\"root\"><p id=\"a596b3f2-13d2-4a99-a3c2-5e0952e0b600\" style=\"font-size: 14px; color: rgb(38, 38, 38); line-height: 1.74; letter-spacing: 0.05em; outline-style: none; overflow-wrap: break-word; margin: 0px;\"><a href=\"https://ideas.darden.virginia.edu/the-power-of-an-idea-meritocracy\" target=\"_blank\">https://ideas.darden.virginia.edu/the-power-of-an-idea-meritocracy</a></p><p style=\"font-size: 14px; color: rgb(38, 38, 38); line-height: 1.74; letter-spacing: 0.05em; outline-style: none; overflow-wrap: break-word; margin: 0px;\"><br></p><p id=\"a596b3f2-13d2-4a99-a3c2-5e0952e0b600\" style=\"font-size: 14px; color: rgb(38, 38, 38); line-height: 1.74; letter-spacing: 0.05em; outline-style: none; overflow-wrap: break-word; margin: 0px;\">if you want to hire great people and have them stay working for you. you have to let them make a lot of decisions , and<mark> You have to be run by ideas, not hierarchy. the best ideas have to win , otherwise good people don&apos;t stay</mark>  <a href=\"https://www.google.com/search?newwindow=1&amp;ei=XxREXteKHZWe4-EP7t204Aw&amp;q=idea+meritocracy&amp;oq=ideameritocracy&amp;gs_l=psy-ab.1.0.0i10l4.870029.873986..875653...0.2..0.273.273.2-1......1....2j1..gws-wiz.......0i71.4KOME2IXHps\" target=\"_blank\">#ideameritocracy</a></p><p id=\"0798738b-9fb5-4ff3-9ff8-b6e395dd642b\" style=\"font-size: 14px; color: rgb(38, 38, 38); line-height: 1.74; letter-spacing: 0.05em; outline-style: none; overflow-wrap: break-word; margin: 0px;\">To be successful you need to pick product ideas based on their own merit (idea meritocracy) rather than on the basis of who thinks they are good (people meritocracy).</p><p id=\"949045a7-6b18-4fdf-af54-661dab3fca07\" style=\"font-size: 14px; color: rgb(38, 38, 38); line-height: 1.74; letter-spacing: 0.05em; outline-style: none; overflow-wrap: break-word; margin: 0px;\"><mark>An Idea Meritocracy is an environment in which the best idea wins</mark>. \n<mark>The best idea is determined by the quantity and quality of the data, not by positional power</mark>. \nI have studied examples of companies that have created Idea Meritocracies, including Google, Intuit, Pixar Animation Studios and Bridgewater Associates. In those organizations, an Idea Meritocracy has played a key role in driving consistent high performance and has warded off complacency and group think by empowering employees to have the curiosity and courage to challenge, to explore like scientists by asking the <mark>3 W</mark>&#x2019;s: <mark>Why ? What if ? Why not ?</mark></p><blockquote style=\"padding-left: 1em; margin-top: 5px; margin-bottom: 5px; margin-left: 0px; border-left: 3px solid rgb(238, 238, 238); opacity: 0.6;\">To flourish in the innovation age, companies must change how decisions are made and change how leaders lead. To do so you must change how decisions are made to what I call leadership by experiment. Moving from politics and PowerPoints to enabling the idea to prove itself. From boss votes with their opinion, to the customers vote with their feet. From the hierarchy sets the agenda, to the innovators set the agenda.</blockquote></div></body></div>",
  "slug": 4710687,
  "title": "Idea Meritocracy"
}

Как написать пакетный код Python для преобразования json в html?

Имя html-файла — «заголовок». например, «Меритократия идей».

Пример json-файла: https://www.dropbox.com/s/1dbnzvb99wrm0v0/json%20file%20-kangland.zip?dl=0

Извините: я не кодер, я просто понимаю логику кода, но я не могу писать код.

Большое спасибо !

github.com/softvar/json2html
Teejay Bruno 26.12.2020 08:46

Разместите код. Что вы пробовали? Что ты получил? Что вы хотите?

Jarvis 26.12.2020 08:46

При всем уважении, есть ли у вас какие-либо попытки или усилия для достижения этого? Если да, не могли бы вы поделиться с нами?

Caner Burc BASKAYA 26.12.2020 08:47

Я не кодер, я просто понимаю логику кода, но я не умею писать код.

Kanglando 26.12.2020 09:02
Почему в 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
221
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Шаг 1 :

pip install json2html

Шаг 2 :

from json2html import *
You can read individual JSON in your directory and pass that in for loop, for now, I have taken a single JSON.
sample = {
  "body_html": "<div><head></head><body><div class=\"lake-content-editor-core lake-engine\" data-lake-element=\"root\" data-selection...........}

json2html.convert(json = sample)

✅ Ваш вывод будет выглядеть так:

Ответ принят как подходящий
import json

list_of_files = ["kiqgfg.json"]
for file_name in list_of_files:
    fi = open(file_name, 'r')
    data = json.load(fi)
    fo = open(data["title"]+".html", 'w') 
    fo.write(data["body_html"])
    fi.close()
    fo.close()

Он берет каждый файл и берет данные для записи в новый html-файл.

Если вам нужно прочитать все файлы json в определенном каталоге, используйте приведенный ниже код. edit: добавлена ​​проверка ключа в файле json

import json
from glob import glob
for file_name in glob("*.json"):
    fi = open(file_name, 'r')
    data = json.load(fi)
    if 'title' in data.keys():
        fo = open(data["title"], 'w')
        if 'body_html' in data.keys():
            fo.write(data["body_html"])
    fi.close()
    fo.close()

Большое спасибо ! Как сканировать все файлы json?

Kanglando 26.12.2020 09:14

@Kanglando Добавьте имена файлов в list_of_files, то есть list_of_files = ["file1.json", "file2.json", "file3.json"]. Если файлы выходят по разным путям, добавьте полный путь.

vivek kumar 26.12.2020 09:16

все файлы json находятся в одной папке. Возможно ли сканирование [*.json] в каталоге?? @вивек-кумар

Kanglando 26.12.2020 09:18

Пожалуйста, проверьте обновленный ответ. Он использует библиотеку glob.

vivek kumar 26.12.2020 09:23

Ошибка: TypeError: write() argument must be str, not None . Но я добавляю str() , fo.write(str(data["body_html"])), все еще есть ошибка: File ".\json2html.py", line 26, in <module>fo = open(data["title"],'w')KeyError: 'title'

Kanglando 26.12.2020 09:50

Эта ошибка, вероятно, означает, что ключ title не существует в файле json. Должно быть условие для проверки существования ключа. я отредактирую ответ

vivek kumar 26.12.2020 10:01

Большое спасибо ! Я нашел этот файл, только один . Я удалил это. Но есть еще одна проблема, которую нужно сначала решить. В названии есть специальные символы? : , и т.д. OSError: [Errno 22] Invalid argument . Я должен заменить эти названия.

Kanglando 26.12.2020 10:16

Я использую re для замены специальных символов dataTitle = re.sub("[|\^&+\-%*?/=!>]", " ", data["title"]), но получил ошибку: TypeError: list indices must be integers or slices, not str @vivek-kumar

Kanglando 26.12.2020 11:27

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