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...