0

I have a problem regarding to writing CSV file. Everytime I write my CSV file using python suddenly there is a blank space in every rows Here is the CSV file with blank space. So I search for the solution in the internet. Then some website says that I just need to change "w" to "wb" but after I try to run the program an error occur.

Error : TypeError: a bytes-like object is required, not 'str'

My Code :

seat =[]
csvfile = open('coba.csv') 
seating = csv.reader(csvfile)
for line in seating:
    seat.append(line)

print("Buy seat ?")
answer_1 = input("Answer : ")
if (answer_1 == "yes"):
    answer_2 = input("Enter preferred seat: ")
    if (answer_2 == "A1"):
        row = 1
        column = 0
        seat[row][column] = "X"
        writer = csv.writer(open('coba.csv', 'wb'))
        writer.writerows(seat)
        for line in seat:
            print(' | '.join(line))

CSV File :

[Business]
A1,A2,A3,A4,A5
B1,B2,B3,B4,B5
[Economy]
C1,C2,C3,C4,C5
D1,D2,D3,D4,D5
DeltaTroz
  • 19
  • 7

2 Answers2

0

You are reading in 'r' and writing in 'wb'

You either have to change the data type of each element or simply

Change wb to w and it works

Full code

import csv

seat =[]
csvfile = open('coba.csv')
seating = csv.reader(csvfile)
for line in seating:
    seat.append(line)

print("Buy seat ?")
answer_1 = input("Answer : ")
if (answer_1 == "yes"):
    answer_2 = input("Enter preferred seat: ")
    if (answer_2 == "A1"):
        row = 1
        column = 0
        seat[row][column] = "X"
        writer = csv.writer(open('coba.csv', 'w'))
        writer.writerows(seat)
        for line in seat:
            print(' | '.join(line))

Output

Buy seat ?
Answer : yes
Enter preferred seat: A1
[Business]
X | A2 | A3 | A4 | A5
B1 | B2 | B3 | B4 | B5
[Economy]
C1 | C2 | C3 | C4 | C5
D1 | D2 | D3 | D4 | D5

Opening the generated file in excel

in EXCEL

Krishna
  • 924
  • 1
  • 7
  • 28
0

Use the newline keyword argument in your open() calls,

seat = []
with open('coba.csv', 'r', newline='') as csvfile:
    seating = csv.reader(csvfile)
    for line in seating:
        seat.append(line)

print("Buy seat ?")
answer_1 = input("Answer : ")
if answer_1 == "yes":
    answer_2 = input("Enter preferred seat: ")
    if answer_2 == "A1":
        row = 1
        column = 0
        seat[row][column] = "X"
        with open('coba.csv', 'w', newline='') as csvfile:
            writer = csv.writer(csvfile)
            writer.writerows(seat)
            for line in seat:
                print(' | '.join(line))
cssko
  • 3,027
  • 1
  • 18
  • 21