I want to write to a csv using python's 3 module. However, I did not find any documentation that tells me how to pass an encoding argument.
My code:
for item in list_documents:
print("The item is: ", item)
wb = openpyxl.load_workbook(path+item)
sh = wb.get_active_sheet()
split_item = item.split(".")[0]
new_name = str(split_item) + ".csv"
with open(path + new_name, 'w', newline="") as f:
c = csv.writer(f, delimiter=";")
counter = 0
for r in sh.rows:
counter += 1
print(counter)
c.writerow([cell.value for cell in r])
My code reads lines from an xlsx file and puts them into a csv. For the csv.writer
, I cannot seem to be able to specify that I want UTF-8 encoding.
The error message:
Traceback (most recent call last):
File "C:/Users/aprofir/Desktop/python_project/transform_data/xlsx_to_csv.py", line 31, in <module>
c.writerow([cell.value for cell in r])
File "C:\Users\aprofir\AppData\Local\Programs\Python\Python37-32\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u0142' in position 173: character maps to <undefined>
As I have understood, the character \u0142
refers to the polish letter ł. Is there a way I go around this. I cannot delete the data or alter it.