我正在使用Django v1.11和Python。我试图上传文件然后解析它。该文件有一些奇怪的编码,所以我最初写了一个测试脚本,发现该文件使用的是utf-16编码。使用该测试脚本(我在Django之外使用),我使用了:
inputFile = open(inputFilePath, 'rt', encoding='utf-16')
使用Django时,我无法进行解码。在我的views.py中,我使用:
if "specFile" in request.FILES:
specFilePath = request.FILES['specFile']
if(request.POST['specType'] == 'Absorbance'):
doStuff(specFilePath)
这是简单的方法:
def doStuff(specFilePath):
for line in specFilePath:
print(line)
这里我得到了编码文本:
b'\xff\xfe#\x00#\x00B\x00L\x00O\x00C\x00K\x00S\x00=\x00 \x006\x00\r'
b'\x00\n'
b'\x00P\x00l\x00a\x00t\x00e\x00:\x00\t\x00e\x001\x00\t\x001\x00.\x003\x00\t\x00P\x00l\x00a\x00t\x00e\x00F\x00o\x00r\x00m\x00a\x00t\x00\t\x00E\x00n\x00d\x00p\x00o\x00i\x00n\x00t\x00\t\x00A\x00b\x00s\x00o\x00r\x00b\x00a\x00n\x00c\x00e\x00\t\x00R\x00a\x00w\x00\t\x00F\x00A\x00L\x00S\x00E\x00\t\x001\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x002\x00\t\x002\x006\x000\x00 \x002\x008\x000\x00 \x00\t\x001\x00\t\x002\x004\x00\t\x003\x008\x004\x00\t\x001\x00\t\x001\x006\x00\t\x00\t\x00\r'
...
When putting in
line = line.decode(encoding='latin1')
b'\xff\xfe#\x00#\x00B\x00L\x00O\x00C\x00K\x00S\x00=\x00 \x006\x00\r'
b'\x00\n'
b'\x00P\x00l\x00a\x00t\x00e\x00:\x00\t\x00e\x001\x00\t\x001\x00.\x003\x00\t\x00P\x00l\x00a\x00t\x00e\x00F\x00o\x00r\x00m\x00a\x00t\x00\t\x00E\x00n\x00d\x00p\x00o\x00i\x00n\x00t\x00\t\x00A\x00b\x00s\x00o\x00r\x00b\x00a\x00n\x00c\x00e\x00\t\x00R\x00a\x00w\x00\t\x00F\x00A\x00L\x00S\x00E\x00\t\x001\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x002\x00\t\x002\x006\x000\x00 \x002\x008\x000\x00 \x00\t\x001\x00\t\x002\x004\x00\t\x003\x008\x004\x00\t\x001\x00\t\x001\x006\x00\t\x00\t\x00\r'
...
投入时
line = line.decode(encoding='utf-16')
我收到错误消息:
UnicodeDecodeError:'utf-16-le' codec can't decode byte 0x0d in position 24: truncated data
我不知道从哪里开始。还有其他方法可以解码吗? 此外,对此问题中的任何错误或不良措辞道歉。这是我提出的第一个Stack Overflow问题,Django / Python只是我在药物发现平台开发科学方面的工作中使用的工具。
答案 0 :(得分:0)
我提出了一个看起来很有效的解决方案:
line = line.strip().replace('\xff', '').replace('\xfe', '').replace('\x00', '').rstrip()
这似乎通过消除\ xff类型的东西来解决问题。 为了参考和简单的谷歌搜索,这些问题来自Molecular Devices Spectromax吸光度/荧光板读数器的数据文件。