我曾经使用 python(2.7) 脚本从 spotify 读取拉丁播放列表。
到目前为止,latin-1 工作正常。
但后来我遇到了一个像 NG² 这样的名字,这使它不再工作
。
这是错误消息:
...
Solo Fue Una Noche;NG²;Comienzos;9;2004 (printed by a print() cmd)
Traceback (most recent call last):
File "get_playlist-tracks.py", line 110, in <module>
ndt.write(line+"\n").encode('latin-1')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 21-22: ordinal not in range(128)
我想,我需要一个 latin-1 和上标的组合代码。
这是正确的吗?有人知道哪个是正确的吗?
感谢您的许多答案!
好吧,它有点复杂:
(同时)我有 3 个 Win10(64 位)安装(WinA、WinB、WinC)。
在 WinA(最旧的,2011 年,从 Win7 迁移)上,一切正常(Python3.4)
在 winB 和 WinC(最新的硬件,Python3.6)上,curl cmd 的退出代码为 1,
没有人知道为什么。
因为我想摆脱旧的 WinA 并继续使用我的 python 脚本,所以我只是
在 VMWare Player12 中的 Fedora20 客户机上尝试这些脚本。
现在上标的这个问题只在 Fedora 系统
上(不在 WinA 上 - 由于 curl 问题,WinB 和 WinC 对我来说不再有意义)。
我在脚本中使用以下前 2 行:
#!/usr/bin/python3.3
# -*- coding: utf-8 -*-
仅当我尝试将此行(使用上标 2)写入文件时才会出现错误:
print (line) # (works fine!)
ndt.write(line+"\n") # (this one not!)
我也尝试使用 .decode('utf-8') 和 .decode('latin-1') 编写命令,
但总是收到相同的消息...
然后我在 python 控制台中尝试了以下操作:
>>> line="Solo Fue Una Noche;NG²;Comienzos;9;2004"
>>> playlist_name = '/home/.../Python/PLLs/Sole_01a_tracks.txt'
>>> ndt = open(playlist_name, 'w')
>>> ndt.write(line+"\n").decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'decode'
>>> ndt.write(line+"\n")
40
>>> line
'Solo Fue Una Noche;NG²;Comienzos;9;2004'
>>> playlist_name
'/home/.../Python/PLLs/Sole_01a_tracks.txt'
>>> ndt.write(line)
39
编码
print ("playlist_contents_file:", playlist_name)
打印出来:
('playlist_contents_file:', u'/home/.../Python/PLLs/Sole_01a_tracks.txt')