JSON-дампы помещают случайные цифры вместо некоторых символов в Python 3
Я читаю текстовый файл, а затем создаю словарь Python, после чего мне нужно создать файл JSON из этого словаря.
Вот пример текстового файла:
В общежитии Берляндского государственного университета живет N студентов. Каждый из них иногда хочет пользоваться кухней, поэтому руководитель общежития придумал график использования кухни, чтобы избежать конфликтов:
Первый ученик начинает пользоваться кухней в момент 0 и должен завершить приготовление не позднее, чем в момент А1. Второй ученик начинает пользоваться кухней в момент А1 и должен закончить приготовление не позднее, чем в момент А2. И так далее.
N-й студент начинает пользоваться кухней во время AN-1 и должен закончить приготовление не позднее, чем во время AN. Приближаются каникулы в Берляндии, поэтому сегодня каждый из этих N студентов хочет приготовить несколько блинов. Я-студент должен готовить в двух единицах времени. Студенты поняли, что, вероятно, не все смогут приготовить все, что хотят. Сколько учеников смогут готовить, не нарушая график?
вход
В первой строке входных данных содержится целое число T, обозначающее количество тестовых случаев. Описание Т-тестов приведено ниже. Первая строка каждого теста содержит одно целое число N, обозначающее количество учащихся.
Вторая строка содержит N разделенных пробелом целых чисел A1, A2, ..., AN, обозначающих моменты времени, когда соответствующий ученик должен закончить готовить. Третья строка содержит N разделенных пробелом целых чисел B1, B2, ..., BN, обозначающих время, необходимое для приготовления каждого из студентов.
Выход
Для каждого теста выведите в отдельной строке количество учеников, которые смогут завершить приготовление.
Ограничения
Должен содержать все ограничения на входные данные, которые могут у вас быть. Отформатируйте это как:
1 ≤ T ≤ 10
1 ≤ N ≤ 10 ^ 4
0
1 ≤ Bi ≤ 10^9
пример
Входные данные:
2 3
1 10 15
1 10 3
3
10 20 30
15 5 20
Выход:
2
1
объяснение
Пример кейс 1.
У первой ученицы есть 1 единица времени - момент 0. Ей будет достаточно готовить. У второго студента есть 9 единиц времени, но он хочет готовить в течение 10 единиц времени и не подходит по времени. Третий студент имеет 5 единиц времени и будет соответствовать времени, потому что готовить нужно только 3 единицы времени.
Пример случая 2.
У каждого из студентов есть 10 единиц времени, но только второй сможет уместиться во времени.
И вот сгенерированный JSON:
{
"uid": "abdul",
"descriptions": {
"description0": "There are N students living in the dormitory of Berland State University. Each of them sometimes wants to use the kitchen, so the head of the dormitory came up with a timetable for kitchen's usage in order to avoid the conflicts:",
"description1": "The first student starts to use the kitchen at the time 0 and should finish the cooking not later than at the time A1.",
"description2": "The second student starts to use the kitchen at the time A1 and should finish the cooking not later than at the time A2.",
"description3": "And so on.",
"description4": "The N-th student starts to use the kitchen at the time AN-1 and should finish the cooking not later than at the time AN",
"description5": "The holidays in Berland are approaching, so today each of these N students wants to cook some pancakes. The i-th student needs Bi units of time to cook.",
"description6": "The students have understood that probably not all of them will be able to cook everything they want. How many students will be able to cook without violating the schedule?",
"description7": "Input",
"description8": "The first line of the input contains an integer T denoting the number of test cases. The description of T test cases follows.",
"description9": "The first line of each test case contains a single integer N denoting the number of students.",
"description10": "The second line contains N space-separated integers A1, A2, ..., AN denoting the moments of time by when the corresponding student should finish cooking. ",
"description11": "The third line contains N space-separated integers B1, B2, ..., BN denoting the time required for each of the students to cook.",
"description12": "Output",
"description13": "For each test case, output a single line containing the number of students that will be able to finish the cooking.",
"description14": "Constraints",
"description15": "Should contain all the constraints on the input data that you may have. Format it like:",
"description16": "1 \u2264 T \u2264 10",
"description17": "1 \u2264 N \u2264 10^4",
"description18": "0 < A1 < A2 < ... < AN < 10^9",
"description19": "1 \u2264 Bi \u2264 10^9",
"description20": "Example",
"description21": "Input:",
"description22": "2",
"description23": "3",
"description24": "1 10 15",
"description25": "1 10 3",
"description26": "3",
"description27": "10 20 30",
"description28": "15 5 20",
"description29": "Output:",
"description30": "2",
"description31": "1",
"description32": "Explanation",
"description33": "Example case 1. The first student has 1 unit of time - the moment 0. It will be enough for her to cook. The second student has 9 units of time, but wants to cook for 10 units of time, and won't fit in time. The third student has 5 units of time and will fit in time, because needs to cook only for 3 units of time.",
"description34": "Example case 2. Each of students has 10 units of time, but only the second one will be able to fit in time."
},
"inputs": {},
"outputs": {},
"ex_inputs": {},
"ex_outputs": {},
"miscs": {},
"constraints": {}
}
Если вы видите описания 16-19 в json, вы можете видеть, что он заменен на ≤ на \ u2264, я хочу сделать этот текст json таким же, как в текстовом файле.
Вот как я создаю этот JSON:
data = {
'uid': userId,
'descriptions': description,
'inputs': inputs,
'outputs': outputs,
'ex_inputs': example_input,
'ex_outputs': example_output,
'miscs': misc,
'constraints': constraints
}
print(data)
# Writing Finalized JSON description files
with open('/Users/abdul/PycharmProjects/d2cApi/finalized/description_' + str(fid) + '.json', 'w') as f:
f.write(json.dumps(data, indent=4))
return json.dumps(data)
Как я могу этого достичь?
Помоги мне, пожалуйста!
Заранее спасибо!
3 ответа
Я объединил выше оба ответа как:
# Writing Finalized JSON description files
with open('/Users/abdul/PycharmProjects/d2cApi/finalized/description_' + str(fid) + '.json', 'w', encoding="utf-8")\
as f:
f.write(json.dumps(data, indent=4, ensure_ascii=False))
return json.dumps(data)
я добавил encoding="utf-8"
при открытии файла, а также добавил ensure_ascii=False
при выгрузке данных в файл JSON.
Как насчет использования ensure_ascii=False
?
>>> d = {"descriptions": {"description16": "1 ≤ T ≤ 10"}}
>>> json.dumps(d)
'{"descriptions": {"description16": "1 \\u2264 T \\u2264 10"}}'
>>> json.dumps(d, ensure_ascii=False)
'{"descriptions": {"description16": "1 ≤ T ≤ 10"}}'
Добавлять encoding='utf-8'
до открытия файла.
with open('/Users/abdul/PycharmProjects/d2cApi/finalized/description_' + str(fid) + '.json', 'w', encoding="utf-8") as f: