在Python中读取带有重音符号和特殊字符的YAML文件

jcf*_*jcf 1 python yaml

我正在尝试用 Python 读取以下 YAML 文件:

\n\n
countries:\n  IT:\n    "Italia"\n  PT:\n    "Portugal"\n  ES:\n    "Espa\xc3\xb1a"\n  PE:\n    "Per\xc3\xba"\n  FR:\n    "France"\n  MX:\n    "M\xc3\xa9xico"\n  BR:\n    "Brasil"\n  CO:\n    "Colombia"\n  CL:\n    "Chile"\n  ZA:\n    "South Africa"\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用这个简单的代码:

\n\n
import yaml\nwith open(\'file.yaml\') as file:\n    countries = yaml.load(file, Loader=\'yaml.FullLoader\')\nprint(countries)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我得到的结果如下:

\n\n
{\'countries\': {\'IT\': \'Italia\', \'PT\': \'Portugal\', \'ES\': \'Espa\xc3\x83\xc2\xb1a\', \'PE\': \'Per\xc3\x83\xc2\xba\', \'FR\': \'France\', \'MX\': \'M\xc3\x83\xc2\xa9xico\', \'BR\': \'Brasil\', \'CO\': \'Colombia\', \'CL\': \'Chile\', \'ZA\': \'South Africa\'}}\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如您所看到的,所有重音符号和特殊字符(例如“\xc3\xb1”)都被搞乱了。知道为什么以及如何解决它吗?

\n\n

我正在使用 Python 3.7

\n

Flo*_*ard 7

您应该将其读取为 UTF-8。

with open('file.yaml', 'rt', encoding='utf8') as file:   
     countries = yaml.load(file)
Run Code Online (Sandbox Code Playgroud)