Calling C code
We can call C functions from Cython. The C string strlen()
function is the equivalent of the Python len()
function. Call this function from a Cython .pyx
file by importing it as follows:
from libc.string cimport strlen
We can then call strlen()
from somewhere else in the .pyx
file. The .pyx
file can contain any Python code. Have a look at the cython_module.pyx
file in this book's code bundle:
from collections import defaultdict from nltk.corpus import stopwords from nltk.corpus import names from libc.string cimport strlen sw = set(stopwords.words('english')) all_names = set([name.lower() for name in names.words()]) def isStopWord(w): py_byte_string = w.encode('UTF-8') cdef char* c_string = py_byte_string truth = (w in sw) or (w in all_names) or (not w.isalpha()) or (strlen(c_string) == 1) return truth def filter_sw(words): return [w.lower() for w in words if not isStopWord(w.lower())] def freq_dict(words...