他们在python 3中改变了#(' string')吗?

时间:2016-01-13 04:54:10

标签: python upgrade python-3.5

我在一些非常基本的代码中遇到了一个奇怪的错误,因为(我认为)升级到python 3.5(从2.7开始)

当试图打开一个文件(充满位字符串)并且他们像这样操纵字符串时:

#bit string data
data = open(read_path+'genomes'+str(time)).read().replace(',','\n').replace('\n','')
x = data.split()
CA = np.array(x).astype('string')
Genomes = np.reshape(CA, (size,size))
genomelength = len(Genomes[0][0])
for entry in range(0, size**2): total_mut1[entry] = np.array(sum_digits(CA[entry])).astype('int')
mut_array1 = np.reshape(total_mut1, (size,size))

升级前哪个有用......

我现在收到此错误:

CA = np.array(x).astype('string')
TypeError: data type "string" not understood

这只是一个愚蠢的修复(我希望)。提前谢谢。

1 个答案:

答案 0 :(得分:1)

以下是有关dtype选项的信息: http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html

具体做法是:

  

当用于生成dtype对象时,有几种python类型等效于相应的数组标量:

     

int int _

     

bool bool _

     

float float _

     

复杂的cfloat

     

str string

     

unicode unicode _

     

缓冲无效

     

(所有其他人)对象_

如上面的评论所示,.astype(str)应该有效。

编辑

实际上这些信息来自Python2.7,我也试过这个并且unicode没有用,但astype(str)默认为unicode(正如人们在python3中所期望的那样)。有趣的是,因为这些字符串代码似乎有效:

  

' B'布尔

     

'我' (签名)整数

     

' U'无符号整数

     

' F'浮点

     

' C'复杂浮点

     

' O' (Python)对象

     

' S',' a' (byte-)string

     

' U' Unicode

     

' V'原始数据(无效)

有关python3与python2中字符串的信息(可能是最重要的更改)在这里:

https://docs.python.org/3.0/whatsnew/3.0.html