31 lines
808 B
Python
31 lines
808 B
Python
import json
|
|
import re
|
|
|
|
|
|
def parse_key(key):
|
|
parts = key.split("_")
|
|
parsed = []
|
|
for part in parts:
|
|
if part.isdigit():
|
|
parsed.append((0, int(part))) # 数字优先,按大小
|
|
else:
|
|
parsed.append((1, part)) # 字符串按字典序
|
|
return parsed
|
|
|
|
|
|
def sort_json_keys(input_file, output_file):
|
|
with open(input_file, "r", encoding="utf-8") as f:
|
|
data = json.load(f)
|
|
|
|
sorted_items = sorted(data.items(), key=lambda item: parse_key(item[0]))
|
|
|
|
sorted_data = {k: v for k, v in sorted_items}
|
|
|
|
with open(output_file, "w", encoding="utf-8") as f:
|
|
json.dump(sorted_data, f, ensure_ascii=False, indent=4)
|
|
|
|
|
|
# 示例用法
|
|
if __name__ == "__main__":
|
|
sort_json_keys("text_original/ch2/ja_JP.json", "text_original/ch2/ja_JP.json")
|