我正在尝试使用Cython进行最基本的字符串操作,但似乎无法开始而不必做一堆奇怪的事情。
我只想知道如何做:
def f(str s):
cdef int i
cdef char c
for i in range(len(s)):
c = s[i]
...
遗憾的是,由于类型错误,它甚至无法运行。如果我检查s [0]的类型是什么,例如,它说它是一个字符串...
(为了澄清这里,方法f是从Python调用的。)
所以我可以通过添加这个奇怪的转换步骤来实现它,但我只是想访问数据,我希望它快速(这就是我毕竟使用Cython的原因),当然有更好的方法吗?
def f(str py_s):
s = (<unicode>py_s).encode('utf8')
cdef int i
cdef char c
for i in range(len(s)):
c = s[i]
...
如果我现在用行print(c)代替上面的省略号,该方法将字符打印为整数而不是字符。为什么?我怎么能改变这个?