我正在尝试使用这里找到的tidetable python包。 但写的例子样本代码:
import tidetable
table = tidetable.get(8416092)
然后我得到了误差:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Users\awalters\PycharmProjects\QSI_scripts\venv\lib\site-packages\tidetable\tidetable.py", line 46, in get
return TideTable(stationid, **kwargs)
File "C:\Users\awalters\PycharmProjects\QSI_scripts\venv\lib\site-packages\tidetable\tidetable.py", line 128, in __init__
items = parse(lines)
File "C:\Users\awalters\PycharmProjects\QSI_scripts\venv\lib\site-packages\tidetable\tidetable.py", line 57, in parse
prelim = dict(zip(header, re.split(tab, row.decode('ascii'))))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 52: ordinal not in range(128)
的帮助与unicode stackoverflow错误处理改变用户输入但我使用示例代码的网站,只有输入潮流站ID。有一个解决这个问题的办法或以某种方式去改变我的代码,这样我可以得到验潮站的信息? 问题来源StackOverflow 地址:/questions/59379508/unicodedecodeerror-using-tidetables-library
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误是因为tidetable
包在尝试解码数据时遇到了非ASCII字符,而它默认使用的是ascii
编码。为了解决这个问题,你可以尝试修改tidetable.py
文件中的代码,使其能够处理Unicode字符。
找到报错指向的这一行(根据你的错误信息是第57行):
prelim = dict(zip(header, re.split(tab, row.decode('ascii'))))
将其修改为使用utf-8
编码来解码字符串,因为UTF-8编码支持更广泛的字符集,通常可以解决这类UnicodeDecodeError问题:
prelim = dict(zip(header, re.split(tab, row.decode('utf-8'))))
这样修改后,该库应该能够正确处理包含非ASCII字符的数据了。不过,请注意,直接修改第三方库的源代码不是一个长期的解决方案,因为当你更新这个库时,你的更改可能会被覆盖。如果可能的话,最好向库的维护者报告这个问题,并建议他们进行相应的修改或者提供一个配置选项来选择解码方式。
另外,如果你不能或不想直接修改库文件,你也可以尝试在获取数据之前,先确保数据流是按照UTF-8编码的,但这可能需要对库的调用方式进行更深入的修改或包装。