在cython中将int转换为str?

时间:2018-05-01 00:14:21

标签: string cython

关于如何在Cython中将int转换为字符串,我有一个非常简单的问题。我希望将变量号连接到短语,例如

cdef str consPhrase = "attempt"
cdef int number = 7     #variable
cdef str newString = consPhrase + <str>number    #so it should be "attempt7", "attempt8", etc.

但是,我一直收到错误声明

TypeError: Expected str, got int

我已经看过如何使用Cython进行投射,并声称它已经在&lt; &GT;括号,那么为什么不将int转换为str?

我甚至尝试过

cdef str makeStr(str l):
    return l


cdef str consPhrase = "attempt"
cdef int number = 7
cdef str newString = consPhrase + makeStr(number)

但它在同一行(cdef str newString = consPhrase + makeStr(number)行)上抛出相同的错误。那么,执行这个简单任务的最有效和最正确的方法是什么?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

最简单的方法是将数据转换为字符串,就像在任何其他python代码中一样:

cdef str newString = consPhrase + str(number)

像你试图做的那样投射不会起作用,因为str是一种Python类型,它在Python2中映射到bytes,在Python3中映射到unicode。由于它可能是一个unicode字符串,因此没有一种安全的方法可以将整数强制转换为类似于您尝试的字符串。