Ein Problem mit dem Schreiben von CSV-Dateien auf Python

Sep 13 2020

Hoffe euch allen geht es gut. Ich habe ein Problem beim Schreiben von Code. Ich habe eine CSV-Datei mit 2 Spalten. Eine ist eine Marke (Nummer zwischen 1 und 5) und die andere enthält die entsprechende Bewertung. Mein eigentliches Ziel ist es, eine neue CSV-Datei zu erstellen, aber die Notiz zu ändern, die eine 1 sein sollte, wenn die Markierung> = 3 ist, sonst 0. Ich bin tatsächlich dabei:

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) 

Es schreibt in die Datei, aber ich habe eine leere Zeile zwischen jeder Zeile. Ich weiß auch nicht, wie ich auf die erste Spalte zugreifen soll, um sie in 1 oder 0 zu ändern.

Die CSV-Datei ist durch Semikolons getrennt.

Antworten

a11apurva Sep 13 2020 at 11:21

Ich würde es so versuchen -

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)

Fügen Sie delimiter=';'sowohl Leser als auch Schreiber hinzu, um sich um das Semikolon zu kümmern.

newline='' in open () würde dafür sorgen, dass zwischen den einzelnen Zeilen neue Zeilen eingefügt werden.

Dieses Snippet würde sich auch um Header kümmern.

UngarsCommeça Sep 13 2020 at 11:48

['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.']

Das ist eine Reihe

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.

Dies ist eine Zeile [0], daher führt das Ändern der Zeilen [0] zu einem Fehler. Daher sollten die Zeilen [0] [0] so sein, wie ich denke