Um problema com a escrita de arquivo CSV em python
Espero que todos estejam bem. Eu tenho um problema ao escrever alguns códigos. Eu tenho um arquivo CSV com 2 colunas. Um é uma marca (número entre 1 e 5) e o outro contém a crítica que lhe corresponde. Meu objetivo real é fazer um novo arquivo CSV, mas modificando a nota, que deve ser 1 se a marca for> = 3, senão 0. Na verdade, estou preso nisto:
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)
Ele grava no arquivo, mas eu tenho uma linha em branco entre cada linha. Também não sei como vou acessar a primeira coluna para alterá-la para 1 ou 0.
O arquivo CSV é delimitado por ponto e vírgula.
Respostas
Eu tentaria assim -
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)
Adicione delimiter=';'o leitor e o escritor para cuidar do ponto-e-vírgula.
newline='' em open () cuidaria de novas linhas sendo inseridas entre cada linha.
Este snippet também cuidaria dos cabeçalhos.
['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.']
esta é uma linha
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.
este é um rows [0], então alterar rows [0] resultará em um erro, então rows [0] [0] deve ser da maneira que eu acho