首页 > 解决方案 > 在cython中将int转换为str?

问题描述

关于如何在 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 中进行转换,它声称它与 < > 括号一起下降,那么为什么不将 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)行)上引发相同的错误。那么,完成这个简单任务的最有效和正确的方法是什么?任何帮助,将不胜感激!

标签: stringcython

解决方案


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

cdef str newString = consPhrase + str(number)

像您尝试做的那样进行转换是行不通的,因为str它是一种映射到bytesPython2 和unicodePython3 中的 Python 类型。由于它可能是一个 unicode 字符串,因此没有像您尝试做的那样将整数转换为字符串的安全方法。


推荐阅读