I want to save this list in a CSV file in Python.
['4CIIN', '04-11-2022', '00:00', '2022-11-05 00:00:00', '00:00', b'4CIIN Compiti Scrivi un programma C che, 3CIIN letto lxe2x80x99anno di nascita di una persona e lxe2x80x99anno attuale in input, calcoli lxe2x80x99etxc3xa0 della persona. Restituisci un opportuno messaggio se la persona xc3xa8 maggiorenne o no. - From Google', '0']
With this code
with open('salva.csv','w', newline='n', encoding='utf-8') as f:
write=csv.writer(f)
write.writerows(row)
My result seems not correct
4,C,I,I,N
0,4,-,1,1,-,2,0,2,2
0,0,:,0,0
2,0,2,2,-,1,1,-,0,5, ,0,0,:,0,0,:,0,0
0,0,:,0,0
52,67,73,73,78,32,67,111,109,112,105,116,105,32,83,99,114,105,118,105,32,117,110,32,112,114,111,103,114,97,109,109,97,32,67,32,99,104,101,44,32,51,67,73,73,78,32,108,101,116,116,111,32,108,226,128,153,97,110,110,111,32,100,105,32,110,97,115,99,105,116,97,32,100,105,32,117,110,97,32,112,101,114,115,111,110,97,32,101,32,108,226,128,153,97,110,110,111,32,97,116,116,117,97,108,101,32,105,110,32,105,110,112,117,116,44,32,99,97,108,99,111,108,105,32,108,226,128,153,101,116,195,160,32,100,101,108,108,97,32,112,101,114,115,111,110,97,46,32,82,101,115,116,105,116,117,105,115,99,105,32,117,110,32,111,112,112,111,114,116,117,110,111,32,109,101,115,115,97,103,103,105,111,32,115,101,32,108,97,32,112,101,114,115,111,110,97,32,195,168,32,109,97,103,103,105,111,114,101,110,110,101,32,111,32,110,111,46,32,32,32,45,32,70,114,111,109,32,71,111,111,103,108,101
0
I need some basics to how convert the string in a correct way, and add the delimiter.
3
One approach would be to first convert any bytes
into utf-8. Then use .writerow()
to write a single row.
When using a csv.writer()
you should use newline=''
to avoid extra unwanted newlines (this is explained in the Python docs).
For example:
import csv
row = ['4CIIN', '04-11-2022', '00:00', '2022-11-05 00:00:00', '00:00', b'4CIIN Compiti Scrivi un programma C che, 3CIIN letto lxe2x80x99anno di nascita di una persona e lxe2x80x99anno attuale in input, calcoli lxe2x80x99etxc3xa0 della persona. Restituisci un opportuno messaggio se la persona xc3xa8 maggiorenne o no. - From Google', '0']
row_str = [v.decode('utf-8') if type(v) == bytes else v for v in row]
with open('salva.csv','w', newline='', encoding='utf-8') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(row_str)
Giving you a single row with:
4CIIN,04-11-2022,00:00,2022-11-05 00:00:00,00:00,"4CIIN Compiti Scrivi un programma C che, 3CIIN letto l’anno di nascita di una persona e l’anno attuale in input, calcoli l’età della persona. Restituisci un opportuno messaggio se la persona è maggiorenne o no. - From Google",0
Note: you will need to use an application that can correctly display utf-8 encodings to see this correctly.
Your code used .writerows()
. This would try to iterate over each entry in your list and create a row for each. For example, it is iterating over your 4CIIN
string as separate characters which is why you see individual letters in your output.
0