【发布时间】:2014-10-15 13:04:11
【问题描述】:
我正在尝试在 Python 3 中使用 NumPy fromfile 从文件中读取一串字节。我的目标是将字节转换为普通的 Python 3 字符串。例如:
$ echo "1234" > t.txt
现在文件 t.txt 包含 4 个字节的文本。那么:
import numpy as np
values=np.fromfile('t.txt',dtype='|S1',count=4)
print ("values={}".format(values))
values=np.fromfile('t.txt',dtype='|U1',count=4)
print ("values={}".format(values))
给予:
values=[b'1' b'2' b'3' b'4']
Traceback (most recent call last):
File "./t.py", line 12, in <module>
print ("values={}".format(values))
File "/home/hakon/.pyenv/versions/3.4.2/lib/python3.4/site-packages/numpy/core/numeric.py", line 1715, in array_str
return array2string(a, max_line_width, precision, suppress_small, ' ', "", str)
File "/home/hakon/.pyenv/versions/3.4.2/lib/python3.4/site-packages/numpy/core/arrayprint.py", line 454, in array2string
separator, prefix, formatter=formatter)
File "/home/hakon/.pyenv/versions/3.4.2/lib/python3.4/site-packages/numpy/core/arrayprint.py", line 328, in _array2string
_summaryEdgeItems, summary_insert)[:-1]
File "/home/hakon/.pyenv/versions/3.4.2/lib/python3.4/site-packages/numpy/core/arrayprint.py", line 500, in _formatArray
word = format_function(a[-1])
UnicodeDecodeError: 'utf-32-le' codec can't decode bytes in position 0-3: codepoint not in range(0x110000)
我想获得一个普通的 Python 3 字符串,例如 values='1234'。如何做到这一点?
【问题讨论】:
-
如果你使用
dtype='|S4'会怎样?
标签: python python-3.x numpy