AIチャット
AIチャットに変換を依頼する場合は以下。
以下のテキストから康煕部首で表される文字をCJK漢字に変換し、変換箇所を赤文字でハイライトしてください。また、変換文字が含まれる単語のリストを作ってください。
python
pythonコードは以下。標準入力を受けて標準出力に変換テーブルと変換結果を出力
import re
import sys
import unicodedata
def get_char_info(char):
"""
文字のUnicodeコードポイントとUTF-8バイト列(16進数表記)を返します。
"""
code_point = f"U+{ord(char):04X}"
utf8_bytes = char.encode('utf-8')
hex_representation = ' '.join(f'{b:02X}' for b in utf8_bytes)
return char, code_point, hex_representation
def convert_kangxi_radicals_to_cjk(text):
"""
テキスト内の康煕部首と見なされる文字を一般的なCJK漢字に変換し、
変換箇所を赤文字でハイライト表示します。
変換の詳細(コードポイントとUTF-8バイト列)も表示します。
"""
conversion_map = {
'⺃': '乚', '⺅': '亻', '⺉': '刂', '⺋': '㔾', '⺎': '兀',
'⺏': '尣', '⺐': '尢', '⺒': '巳', '⺓': '幺', '⺔': '彑',
'⺖': '忄', '⺘': '扌', '⺙': '攵', '⺛': '旡', '⺟': '母',
'⺠': '民', '⺡': '氵', '⺢': '氺', '⺣': '灬', '⺦': '丬',
'⺨': '犭', '⺫': '罒', '⺬': '示', '⺭': '礻', '⺱': '罓',
'⺲': '罒', '⺹': '耂', '⺾': '艹', '⻁': '虎', '⻂': '衤',
'⻃': '覀', '⻄': '西', '⻍': '辶', '⻏': '阝', '⻑': '長',
'⻒': '镸', '⻖': '阝', '⻘': '青', '⻟': '飠', '⻤': '鬼',
'⻨': '麦', '⻩': '黄', '⻫': '斉', '⻭': '歯', '⻯': '竜',
'⻲': '亀',
'⼀': '一', '⼁': '丨', '⼂': '丶', '⼃': '丿', '⼄': '乙',
'⼅': '亅', '⼆': '二', '⼇': '亠', '⼈': '人', '⼉': '儿',
'⼊': '入', '⼋': '八', '⼌': '冂', '⼍': '冖', '⼎': '冫',
'⼏': '几', '⼐': '凵', '⼑': '刀', '⼒': '力', '⼓': '勹',
'⼔': '匕', '⼕': '匚', '⼖': '匸', '⼗': '十', '⼘': '卜',
'⼙': '卩', '⼚': '厂', '⼛': '厶', '⼜': '又', '⼝': '口',
'⼞': '囗', '⼟': '土', '⼠': '士', '⼡': '夂', '⼢': '夊',
'⼣': '夕', '⼤': '大', '⼥': '女', '⼦': '子', '⼧': '宀',
'⼨': '寸', '⼩': '小', '⼪': '尢', '⼫': '尸', '⼬': '屮',
'⼭': '山', '⼮': '巛', '⼯': '工', '⼰': '己', '⼱': '巾',
'⼲': '干', '⼳': '幺', '⼴': '广', '⼵': '廴', '⼶': '廾',
'⼷': '弋', '⼸': '弓', '⼹': '彐', '⼺': '彡', '⼻': '彳',
'⼼': '心', '⼽': '戈', '⼾': '戸', '⼿': '手', '⽀': '支',
'⽁': '攴', '⽂': '文', '⽃': '斗', '⽄': '斤', '⽅': '方',
'⽆': '无', '⽇': '日', '⽈': '曰', '⽉': '月', '⽊': '木',
'⽋': '欠', '⽌': '止', '⽍': '歹', '⽎': '殳', '⽏': '毋',
'⽐': '比', '⽑': '毛', '⽒': '氏', '⽓': '气', '⽔': '水',
'⽕': '火', '⽖': '爪', '⽗': '父', '⽘': '爻', '⽙': '爿',
'⽚': '片', '⽛': '牙', '⽜': '牛', '⽝': '犬', '⽞': '玄',
'⽟': '玉', '⽠': '瓜', '⽡': '瓦', '⽢': '甘', '⽣': '生',
'⽤': '用', '⽥': '田', '⽦': '疋', '⽧': '疒', '⽨': '癶',
'⽩': '白', '⽪': '皮', '⽫': '皿', '⽬': '目', '⽭': '矛',
'⽮': '矢', '⽯': '石', '⽰': '示', '⽱': '禸', '⽲': '禾',
'⽳': '穴', '⽴': '立', '⽵': '竹', '⽶': '米', '⽷': '糸',
'⽸': '缶', '⽹': '网', '⽺': '羊', '⽻': '羽', '⽼': '老',
'⽽': '而', '⽾': '耒', '⽿': '耳', '⾀': '聿', '⾁': '肉',
'⾂': '臣', '⾃': '自', '⾄': '至', '⾅': '臼', '⾆': '舌',
'⾇': '舛', '⾈': '舟', '⾉': '艮', '⾊': '色', '⾋': '艸',
'⾌': '虍', '⾍': '虫', '⾎': '血', '⾏': '行', '⾐': '衣',
'⾑': '襾', '⾒': '見', '⾓': '角', '⾔': '言', '⾕': '谷',
'⾖': '豆', '⾗': '豕', '⾘': '豸', '⾙': '貝', '⾚': '赤',
'⾛': '走', '⾜': '足', '⾝': '身', '⾞': '車', '⾟': '辛',
'⾠': '辰', '⾡': '辵', '⾢': '邑', '⾣': '酉', '⾤': '釆',
'⾥': '里', '⾦': '金', '⾧': '長', '⾨': '門', '⾩': '阜',
'⾪': '隶', '⾫': '隹', '⾬': '雨', '⾭': '靑', '⾮': '非',
'⾯': '面', '⾰': '革', '⾱': '韋', '⾲': '韭', '⾳': '音',
'⾴': '頁', '⾵': '風', '⾶': '飛', '⾷': '食', '⾸': '首',
'⾹': '香', '⾺': '馬', '⾻': '骨', '⾼': '高', '⾽': '髟',
'⾾': '鬥', '⾿': '鬯', '⿀': '鬲', '⿁': '鬼', '⿂': '魚',
'⿃': '鳥', '⿄': '鹵', '⿅': '鹿', '⿆': '麥', '⿇': '麻',
'⿈': '黃', '⿉': '黍', '⿊': '黒', '⿋': '黹', '⿌': '黽',
'⿍': '鼎', '⿎': '鼓', '⿏': '鼠', '⿐': '鼻', '⿑': '齊',
'⿒': '齒', '⿓': '龍', '⿔': '龜', '⿕': '龠',
# 他にも変換が必要な文字があればここに追加
}
# sorted_dict = {key: conversion_map[key] for key in sorted(conversion_map)}
# print(sorted_dict)
# conversion_map = sorted_dict
conversion_details = []
for char, converted_char in conversion_map.items():
original_char, original_cp, original_utf8 = get_char_info(char)
converted_cp, converted_utf8 = get_char_info(converted_char)[1:] # 文字は元の変数から取得
conversion_details.append(
f"元の文字: '{original_char}' (コードポイント: {original_cp}, UTF-8: {original_utf8}) "
f"-> 変換後: '{converted_char}' (コードポイント: {converted_cp}, UTF-8: {converted_utf8})"
)
converted_text = ""
for char in text:
if char in conversion_map:
original_char, original_cp, original_utf8 = get_char_info(char)
converted_char = conversion_map[char]
# ハイライト用に色付け (ANSIエスケープシーケンス)
converted_text += f"\033[91m{converted_char}\033[0m" # 赤色に変換
else:
converted_text += char
return converted_text, conversion_details
if __name__ == "__main__":
print("変換したいテキストを入力してください。入力後、Ctrl+D (macOS/Linux) または Ctrl+Z (Windows) を押してEnterを押してください。")
input_lines = sys.stdin.readlines()
text_to_convert = "".join(input_lines)
converted_highlighted_text, details = convert_kangxi_radicals_to_cjk(text_to_convert)
if details:
print("\n--- 変換の詳細 ---")
for detail in details:
print(detail)
else:
print("\n--- 変換された文字はありませんでした ---")
print("\n--- 変換後のテキスト (赤文字でハイライト) ---")
print(converted_highlighted_text)