首页 > 编程知识 正文

日语五十音平假名与片假名的区别,片假名转换平假名

时间:2023-05-05 09:29:01 阅读:248372 作者:1599

python3: 编码:python3 支持UTF-8, 还搞了个 unicode (这是好东西) 通过 unicode进行 字符转换 #转换原理from six import unichrstr1 = "u3041" # 代表一个字符:即 あcode = ord(str1) # 获取该字符的 unicode 值-->一个int 类型的值,可进行加减print(code, type(ord(str1))) # 12353 <class 'int'> 值和类型# unicode 值加1: 该字符的下一个字符: あ + 1-->いprint(chr(code + 1)) # ord(str1)+1 :代表该字符的下一个字符的unicode 值print(chr(code + 1)) # chr() 把unicode转换成字符print(unichr(code + 1)) # unichr()与 chr()作用相同:具体差别百度吧

懂了python3的 unicode 转换,那剩下的就好办了,

平假名范围:"u3041", “u3096”
片假名范围: “u30A1”, "u30F6"

字符编码查询

片假名与平假名转换:
两种思路:

一:

ord(平)+ x =ord(片),只要知道中间 差值 x ,就可以明白字符 的unicode对应关系例如假设 A , a unicode 插值为:10 - //没写ord(),应该明白是他们对应的 unicode 值进行加减 即: a + 10 =A , A - 10 = a可以推出: b+10=B,c + 10=C

平假名范围:"u3041", “u3096”片假名范围: “u30A1”, “u30F6”知道范围了,分别遍历呗,便利结果存到字典里,字典查询,直接哦耶~

这里贴出第二种思路(第一种太简单)

#参数: 平假名起始,结束, 片假名起始,结束 #返回值: 一个包含两个字典的数组def make_dic(Hiragana, endH, Katakana, endK): dic = {} start1, end1 = ord(Hiragana), ord(endH)#先转换成对应 unicode值,用于后续计算 start2, end2 = ord(Katakana), ord(endK) num = 0 # 用于计数 #实际上 这个key没啥用,因为 start1, start2,等不是从零开始的 #for key in range(end2-start2): # 85个数 # dic[chr(start1 + key)] = chr(start2 + key) for key in range(start2, end2): # 85个数 dic[chr(start1 + num)] = chr(start2 + num) #解释: 例如 ABCDEFG与 abcdefg # 字典添加元素: dic[A]=a A 与a 对应 # A +1 与 a + 1 对应 (unicode) --》B 与 b#来个循环就把 所有元素都对应起来了 num += 1 ldict = dict(zip(dic.values(), dic.keys())) # 字典倒转 return [dic, ldict] # 返回一个包含两个字典的数组def check_chart(input_str, arr): for v in input_str:#字符数组里的单个字符 print(v, end=" : ") if v in arr[0]:#arr[0]— {平:片} 字典,判断是否在字典里,有的话输出 print(arr[0][v]) elif v in arr[-1]:#arr[-1]— {片:平} 字典,上面字典没有就在这个字典寻找, print(arr[-1][v])input_str = input("输入:n")#从控制台输入 一串 假名,不能有换行# 平假名范围,片假名范围:范围一样, 元素对应arr = make_dic("u3041", "u3096", "u30A1", "u30F6")check_chart(base_str, arr)

运行结果:
-

RUBY

之所以讲RUBY。。因为它太方便了

Python3 转字节 转其他编码 不能直接加减 得到其他字符(正则和进制 就算了,不会呀),所以用unicode

ruby可以直接在 字符范围 间 遍历,不需要格外 转码

def show_info #平假名范围:"u3041", "u3096" for index in "u3041".."u3096" do printf index end puts "n" #片假名范围: "u30A1", "u30F6" for index in "u30A1".."u30F6" do printf index # print index endendshow_info


贼方便,后面搞个字典把它们对应起来,控制台输入判断,得出结果,哦了~

ruby有字典反转的函数:hash.invert 创建一个新的 hash,倒置 hash 中的 keys 和values
后续搞个 循环,不用每次匹配完都要重新点击运行

注意: ruby 在windows下中文日文 会乱码(有的是输出正常,输入乱码)测试: 新建一个.rb 文件: puts gets.chomp #打印输入的字符

解决方法:

文件头部 加 utf-8 注释,文件头加 GBK编码,系统改成 utf8
结果。。随机
(反正我没成功,转到 Linux 【默认使用utf-8 编码,贼舒服】)

用其他语言都差不多,关键就是一个字符转换问题,哎,溜了溜了

Struts2的​AJAX标签怎么使用监控视图 Kafka消息队列 UKafka

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。