1

This is my current code:

import csv


x = 0


with open("new.csv", mode="w") as csv_file:
   fieldnames = ['Question', 'Answer']
   writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
   writer.writeheader()
   while x < 10:
       writer.writerow({"Question": "What's 9+10?", "Answer": "21"})
       x = x + 1

My csv file comes out with the code:

Question,Answer

What's 9+10?,21

What's 9+10?,21

What's 9+10?,21

What's 9+10?,21

What's 9+10?,21

As you can see, there are spaces in between my values.

I want it to look like:

Question,Answer
What's 9+10?,21
What's 9+10?,21
What's 9+10?,21
What's 9+10?,21
What's 9+10?,21

I was expecting this code to write it without the line breaks. This will create issues, for example, if I'm trying to read the code to do the quiz:

score = 0
full = 0
with open("new.csv", mode="r") as csv_file:
    csv_reader = csv.reader(csv_file)
    next(csv_reader)
    for line in csv_reader:
        answer = input(line[0])
        if answer == line[1]:
            print('Correct answer!\n')
            score += 1
            full += 1
        else:
            print('Incorrect, the answer is: ', line[1], '\n')
            full += 1

This in turn will give me the error: IndexError: list index out of range This is because there is a line break, indicating that the index does not exist. I know I can just skip each line break in the for loop, but I would like for the write function to not write a line break. I am going to assume that those spaces are called blank line breaks. If I am wrong, please correct me.

1 Answer 1

3

If you check the documentation, you'll see that this problem is described. The standard file I/O wants to add a newline, and the csv module wants to add a newline. You just need to suppress one of them:

with open("new.csv", "w", newline='') as csv_file:
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.