If you want those numbers to be treated as text, you need to quote them in the CSV. That means that you want to make sure your items are string types in Python already. You don't say how you're writing the CSV from Python, but if you're just using the csv module, you'll want to use a quote option different from the default (default is QUOTE_MINIMAL). QUOTE_NONNUMERIC is probably what you would want to use here. The documentation for that can be found [here][1]. Here is the example from the doc on how to use this for writing to CSV: import csv with open('eggs.csv', 'w', newline='') as csvfile: spamwriter = csv.writer(csvfile, delimiter=' ', quotechar='"', quoting=csv.QUOTE_NONNUMERIC) spamwriter.writerow(['Spam'] * 5 + ['Baked Beans']) spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) So your code could be modified as follows: with open(filehandle, 'wb') as csvfile: data_writer = csv.writer(csvfile, delimiter = ",", quotechar='"', quoting=csv.QUOTE_NONNUMERIC) if printHeaders: csvfile.write(', '.join(these_headers) + '\n') if dummy: csvfile.write(dummy + '\n') [1]: https://docs.python.org/3/library/csv.html#csv.QUOTE_NONNUMERIC