在Cython中处理字符串

时间:2017-02-19 23:43:54

标签: string cython

我正在尝试使用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)代替上面的省略号,该方法将字符打印为整数而不是字符。为什么?我怎么能改变这个?

0 个答案:

没有答案