Un problème d'écriture de fichier CSV sur python
J'espère que vous allez tous très bien. J'ai un problème lors de l'écriture de code. J'ai un fichier CSV avec 2 colonnes. L'une est une marque (nombre entre 1 et 5) et l'autre contient la critique qui lui correspond. Mon objectif réel est de créer un nouveau fichier CSV, mais en modifiant la note, qui devrait être un 1 si la marque est> = 3 sinon 0. Je suis en fait bloqué sur ceci:
train_csv_path = "hotel_reviews.csv"
with open('new_hotel_reviews.csv', 'w') as newfile:
writer = csv.writer(newfile)
with open(train_csv_path, 'r') as f:
reader = csv.reader(f)
for row in reader:
writer.writerow(row)
Il écrit dans le fichier, mais j'ai une ligne vide entre chaque ligne. De plus, je ne sais pas comment j'accéderai à la première colonne pour la changer en 1 ou 0.
Le fichier CSV est délimité par des points-virgules.
Réponses
J'essaierais comme ça -
with open('outfile.csv', 'w', newline='') as outfile:
writer=csv.writer(outfile, delimiter=';')
with open('infile.csv', mode='r') as infile:
reader = csv.reader(infile, delimiter=';')
headers = next(reader)
writer.writerow(headers)
for rows in reader:
print(rows)
if int(rows[0])>=3:
rows[0] = "1"
else:
rows[0] = "0"
writer.writerow(rows)
Ajoutez delimiter=';'à la fois le lecteur et l'écrivain pour prendre soin du point-virgule.
newline='' dans open () s'occuperait de l'insertion de nouvelles lignes entre chaque ligne.
Cet extrait de code prendrait également en charge les en-têtes.
['4;Clean facility just off freeway ..... staff friendly and efficient .... good breakfast choices. We will stay here again for follow up visits with doctors at UT Northeast and recommend it for others requiring expected high standards from Hilton properties.']
c'est une ligne
4;Clean facility just off freeway ..... staff friendly and efficient .... good breakfast choices. We will stay here again for follow up visits with doctors at UT Northeast and recommend it for others requiring expected high standards from Hilton properties.
c'est une ligne [0], donc changer les lignes [0] entraînera une erreur, donc les lignes [0] [0] devraient être comme je suppose