我正在阅读Python中的一些CSV文件。该文件已从Windows上载到AWS S3,然后使用urllib.request下载。该文件应以
开头some text
但是它以
开头b'u\xabZj\x9ae\x89\xc6\xad\x8a\x89\xff\xbewf\xb1\xec\\zV\xda\xb1\xee\xb8\xef\xbb\xbfsome text
所以,当这段代码被执行时:
filetemp = urllib.request.urlopen(file_url)
content = filetemp.read(1024)
content
变量以
b'u\xabZj\x9ae\x89\xc6\xad\x8a\x89\xff\xbewf\xb1\xec\\zV\xda\xb1\xee\xb8\xef\xbb\xbf**some text
它可以是某种BOM吗?它看起来不像我熟悉的任何BOM。我使用chardet找出文件是使用Windows-1252编码编码的,当我使用该编码对其进行解码时,我得到了
u«Zjše‰ÆŠ‰ÿ¾wf±ì\\zVÚ±î¸ï»¿some text
当我在Excel或记事本中打开文件时,它看起来很好,它以some text
开头。所以,显然他们知道如何处理它,但我不知道。我错过了什么?
更新:当我在Mac上下载此文件并以相同的方式阅读(使用相同的代码)时,它仅以\xef\xbb\xbf
为前缀,即UTF-8 BOM。所以Windows正在添加其他字节。
更新2 :好的,它必须是urllib.request
的东西,因为当我从AWS S3手动下载该文件并执行以下Python脚本时:
file = open('myfile.csv', 'r')
filecontent = file.read()
file.close()
filecontent
变量不包含那些奇怪的字节,只包含BOM。这可能与他的评论中链接的usr2564301类似。
答案 0 :(得分:1)
我在usr2564301's评论的帮助下找到了解决方案。上传文件时,字符串data:application/vnd.ms-excel;base64,
被添加到HTTP请求有效负载之前。 This answer can可以应用于我的问题。