Markdown
2019-11-22T16:00:00Z 13:58PM
来讲一下这个日语词头是怎么优化的。
日语辞典,是我做过的词典中,最难做词头的辞典。
平假 片假 汉字
今天的问题是 词头里面有点,就是这个东西 · ,查词的时候不好输入,应该将这个点处理掉。
CASE 1
首先 平假 里面的点,是重音的意思(大概),所以直接去掉形成新词头就可以了。
比如说:はぐら·す
形成一个新词头 はぐらす
,后一个跳转到前一个。
はぐらす
@@@LINK=はぐら·す
</>
CASE 2
汉字里面的点就不是重音的意思了,而是不同的写法,所以要以点为界限,分开来俩,分别跳回原词头。
比如这个词头,かわら【河原·川原】
就应该做成:
河原
@@@LINK=かわら【河原·川原】
</>
川原
@@@LINK=かわら【河原·川原】
</>
CASE 3
一个词头既有平假又有汉字呢?
请依序执行 CASE 1, CASE 2
附上代码:
说明:
- 代码只是参考,处理过程遇到的问题我没办法写出来
- 源文件我就不放了,处理的时候是要随机应变的,比如说,生出来新词头,会不会和原词头碰撞之类的问题,就只能见到了再处理做决定
- 代码问题可提,但是不保证完全解答。
- 学习思路是最重要的
import sys
# progress_bar
def view_bar(num,total):
rate = num / total
rate_num = int(rate * 100)
#r = '\r %d%%' %(rate_num)
r = '\r%s>%d%%' % ('=' * rate_num, rate_num,)
sys.stdout.write(r)
sys.stdout.flush
citou_list = []
read1 = open('half_done.txt', 'r', encoding="utf8").readlines()
write1 = open('dian_citou.txt', 'w+', encoding="utf8")
count = 0
total = len(read1)
while count < total:
if count%2 == 0:
# 说明是词头
citou_list.append(read1[count][:-1]) # 不要换行符 个人喜好
count += 1
view_bar(count, total)
count = 0
total = len(citou_list)
print("test")
for citou in citou_list:
if '·' in citou:
if '【' in citou:
jiaming = citou[:citou.find('【')]
hanzi = citou[citou.find('【')+1:-1]
if '·' in jiaming:
# 假名直接去掉点
if jiaming.replace('·', '') not in citou_list:
write1.write(jiaming.replace('·', '') + '\n@@@LINK=' + citou + '\n</>\n')
if '·' in hanzi:
# 汉字就要分开词头
hanzi = hanzi.split('·')
for i in hanzi:
if i not in citou_list:
write1.write(i + '\n@@@LINK=' + citou + '\n</>\n')
else:
if citou.replace('·', '') not in citou_list:
write1.write(citou.replace('·', '') + '\n@@@LINK=' + citou + '\n</>\n')
count += 1
view_bar(count, total)
write1.close()