if you do something like
for row in results:
dict_results = row.asdict()
the dict_results will be in rdflib variables so like URIRef, Literal, etc so you may need to iterate through the dict and do .toPython() but it might be worth trying and seeing what happens if you write that dict_results to a csv. I haven't tried myself