rime / rime-middle-chinese

中古漢語拼音輸入方案
GNU General Public License v3.0
28 stars 4 forks source link

python读取zyenpheng.dict.yaml出现unacceptable characterReaderError: unacceptable character #x20dff: special characters are not allowed #1

Closed laubonghaudoi closed 4 years ago

laubonghaudoi commented 7 years ago

我想用python自制一个发音字典,通过读取.dict.yaml中的dict,输入汉字输出拼音,一开始的代码如下:

import yaml
f = open('zyenpheng.dict.yaml')
x = yaml.load(f)

但是出现以下错误: ReaderError: unacceptable character #x20dff: special characters are not allowed .yaml文件不支持utf-32编码,zyenpheng.dict.yaml用的是什么编码?是否有办法忽略这些生僻字?或者其他解决办法?

osfans commented 7 years ago

---和...之間的才算是yaml的內容了。

建議直接解析...後面的內容。

# Author:
#  - polyhedron <biopolyhedron@gmail.com>
#

---
name: zyenpheng
version: "2015.09.01"
sort: by_weight
use_preset_vocabulary: true
...

𠂇   cax 
laubonghaudoi commented 7 years ago

建議直接解析...後面的內容

抱歉我是小白,请问怎样直接解析...后面的内容?能示范一下代码就最好了……另外这个错误似乎不是开头引起的,而是其中的生僻字不在utf-8编码内。

lotem commented 7 years ago

該字位於擴展-B 區。莫非 YAML 解析器不支持。 http://www.zdic.net/z/87/js/20DFF.htm

我建議不要解析 YAML,因爲只有開頭一段配置是 YAML 格式的。 ... 之後的韻書正文是 Tab 分隔的值。

laubonghaudoi commented 7 years ago

谢谢,若只有开头一段是YAML格式,那请问python下有什么方法能把这些字读取到dict里面呢,不用YAML解析器的话?

LEOYoon-Tsaw commented 4 years ago

把YAML頭去掉再讀,按txt讀就行了,用tab分隔

lotem commented 4 years ago

讀文本文件,跳過 ... 之前的行,再按Tab分隔的格式讀取。 此外碼表部分也可能有 # 字符開頭的註釋行。