下面演示了这个问题:
import io
import numpy as np
a = np.loadtxt(io.StringIO("val1 val2\nval3 val4"), \
dtype=np.dtype([("col1", "S10"), ("col2", "S10")]))
print("looks weired: %s"%(a["col1"][0]))
assert(a["col1"][0] == "val1")
我不明白我应该如何比较字符串。在我的系统(numpy 1.6.2,python 3.2.2)上,输出如下所示:
>>>
looks weired: b'val1'
Traceback (most recent call last):
File "D:/..../bug_sample.py", line 7, in <module>
assert(a["col1"][0] == "val1")
AssertionError
最佳答案
这与 numpy
无关:
>>> b"asd" == "asd"
False
在 Python 3 中
bytes
对象不等于 string
s。所以要么:b"val1"
而不是 "val1"
进行比较,以便类型匹配,bytes
对象解码为字符串(如 .decode('utf-8')
并与 "val1"
进行比较。关于python - 如何在 Python 3 中比较 numpy 字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19956983/