Files
geojson_conv/main_decoder_text_uni.py
2024-11-15 15:03:05 +03:00

56 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import os
import json
def decode_text(text):
"""
Преобразует строки с ошибкой кодировки из Latin-1 в UTF-8.
"""
try:
return text.encode('latin1').decode('utf-8')
except (UnicodeEncodeError, UnicodeDecodeError):
return text
def recursive_decode(obj):
"""
Рекурсивно декодирует строки в объекте JSON.
"""
if isinstance(obj, str):
return decode_text(obj)
elif isinstance(obj, list):
return [recursive_decode(item) for item in obj]
elif isinstance(obj, dict):
return {key: recursive_decode(value) for key, value in obj.items()}
return obj
def process_json_file(file_path):
"""
Обрабатывает JSON-файл, декодируя строки с ошибочной кодировкой Latin-1.
Создает новый файл с суффиксом '_decoded'.
"""
with open(file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
# Рекурсивно декодируем все строки в JSON-структуре
decoded_data = recursive_decode(data)
# Создаем новый файл с суффиксом '_decoded'
new_file_path = f"{os.path.splitext(file_path)[0]}_decoded.json"
with open(new_file_path, 'w', encoding='utf-8') as new_file:
json.dump(decoded_data, new_file, ensure_ascii=False, indent=4)
print(f"Создан файл: {new_file_path}")
def process_directory(directory_path):
"""
Рекурсивно обрабатывает все JSON-файлы в указанной директории.
"""
for root, _, files in os.walk(directory_path):
for file_name in files:
if file_name.endswith('.json'):
file_path = os.path.join(root, file_name)
print(f"Обработка файла: {file_path}")
process_json_file(file_path)
# Укажите путь к папке с JSON-файлами
directory_path = 'E:\code\kvant.app'
process_directory(directory_path)