I have data stored in one file - delimiter tab {'id': '123', 'name': 'pečnostní informační služba'}
When I am trying to read the data and write data in 2nd file using python code but getting error
with open(output_file, 'w') as f_output, open(input_file,encoding = 'utf-8-sig') as f_input:
reader = csv.DictReader(f_input,delimiter='\t')
fieldnames = reader.fieldnames
writer = csv.DictWriter(f_output, fieldnames=fieldnames)
writer.writeheader()
for row in reader:
print(row)
writer.writerow(row)
Traceback (most recent call last):
File "C:\Python_Projects\Python_extra_code\csv_example.py", line 180, in <module>
writer.writerow(row)
File "C:\Dev\Python3.11\Lib\csv.py", line 154, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Dev\Python3.11\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 '\u010d' in position 69: character maps to <undefined>
your output file uses 'cp1252' encoding. This encoding doesn't have unicode character č
which you are trying to save. You can replicate the error by running this two lines:
text = '\u010d'
text.encode('cp1252')
Try fixing this error by saving in utf-8 encoding:
with open(output_file, 'w',encoding='utf-8') as f_output:
text = '\u010d'
f_output.write(text)
Or by allowing to ignore errors while saving badly decoded characters:
with open(output_file, 'w',encoding='cp1252', errors='ignore') as f_output:
text = '\u010d'
f_output.write(text)