Problem z zapisem pliku CSV w Pythonie

Sep 13 2020

Mam nadzieję, że wszyscy świetnie sobie radzicie. Mam problem podczas pisania kodu. Mam plik CSV z 2 kolumnami. Jedna to ocena (liczba od 1 do 5), a druga zawiera odpowiadającą jej recenzję. Moim rzeczywistym celem jest stworzenie nowego pliku CSV, ale zmodyfikowanie notatki, która powinna wynosić 1, jeśli znak wynosi> = 3, w przeciwnym razie 0. Właściwie utknąłem na tym:

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) 

Zapisuje w pliku, ale między każdym wierszem jest pusty wiersz. Nie wiem też, jak uzyskam dostęp do pierwszej kolumny, aby zmienić ją na 1 lub 0.

Plik CSV jest rozdzielany średnikami.

Odpowiedzi

a11apurva Sep 13 2020 at 11:21

Spróbuję tego w ten sposób -

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)

Dodaj delimiter=';'czytelnika i pisarza, aby zająć się średnikiem.

newline='' in open () zajmie się wstawieniem nowych wierszy między każdy wiersz.

Ten fragment zajmie się również nagłówkami.

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

to jest rzędy

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.

to są wiersze [0], więc zmiana wierszy [0] spowoduje błąd, więc wydaje mi się, że wiersze [0] [0] powinny być