python - 下载的 CSV 文件 - UTF-8-BOM 格式的问题
问题描述
我有从 bitbucket 下载 CSV 文件的代码。下载后文件变成了一个字符串列表(所有行的列表)。问题是当文件是 UTF-8-BOM 格式时,它在开头添加了字符,然后在尝试读取 CSV 文件时失败。下载后如何编码?
这是代码:
fld = self._download(csv_url)
converted = parser.parse(fld)
def parse(self, f: io.StringIO):
for row in csv.reader(f): # ---- **failed here**.
if not row:
continue
def _download(self, url: str):
response = self.authenticator.download(url)
return response.text.splitlines()
解决方案
如果 HTTP 请求返回带有 BOM 的数据而您不想要它,请将其删除。
def _download(self, url: str):
response = self.authenticator.download(url)
return response.text.lstrip('\ufeff').splitlines()
# ^^^^^^^^^^^^^^^^^
str.lstrip()
从某种意义上说是健壮的,如果它不以 BOM 开头,它只会返回整个字符串。
推荐阅读
- sql-server - Visual Studio 数据库项目 SQLCMD 变量未定义用于视图定义
- html - CSS Android - UL 列表不可滚动
- r - 如何合并r中的数据框?
- c++ - O(N) 复杂度的子数组
- python - Python statsmodels – ValueError:如何创建 0 到 1 范围内的变量?
- python - 处理改变 SQLAlchemy 对象的棉花糖的优雅方法
- bash - Unix命令替换文件中的内容
- python - 字符串连接操作中的属性错误和键错误
- postgresql - 带有 golang pgx 的 postgres 枚举
- angular - Kendo-UI Angular 无法绑定到值