У меня есть 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't stay</mark> <a href=\"https://www.google.com/search?newwindow=1&ei=XxREXteKHZWe4-EP7t204Aw&q=idea+meritocracy&oq=ideameritocracy&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>’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
Извините: я не кодер, я просто понимаю логику кода, но я не могу писать код.
Большое спасибо !
Разместите код. Что вы пробовали? Что ты получил? Что вы хотите?
При всем уважении, есть ли у вас какие-либо попытки или усилия для достижения этого? Если да, не могли бы вы поделиться с нами?
Я не кодер, я просто понимаю логику кода, но я не умею писать код.






Шаг 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 Добавьте имена файлов в list_of_files, то есть list_of_files = ["file1.json", "file2.json", "file3.json"]. Если файлы выходят по разным путям, добавьте полный путь.
все файлы json находятся в одной папке. Возможно ли сканирование [*.json] в каталоге?? @вивек-кумар
Пожалуйста, проверьте обновленный ответ. Он использует библиотеку glob.
Ошибка: 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'
Эта ошибка, вероятно, означает, что ключ title не существует в файле json. Должно быть условие для проверки существования ключа. я отредактирую ответ
Большое спасибо ! Я нашел этот файл, только один . Я удалил это. Но есть еще одна проблема, которую нужно сначала решить. В названии есть специальные символы? : , и т.д. OSError: [Errno 22] Invalid argument . Я должен заменить эти названия.
Я использую re для замены специальных символов dataTitle = re.sub("[|\^&+\-%*?/=!>]", " ", data["title"]), но получил ошибку: TypeError: list indices must be integers or slices, not str @vivek-kumar