Add newline at the end csv to be consistent
Add a method to retrieve rows in a file

Using the csv module we parse the input files and returns each row separately.

The test make sure we retrieve the expected number of rows
Strip each field of whitespaces when rows are read from the input file

This way all rows and fields have the same format.
Create the book object using namedtuple

The ease of use of namedtuple makes is a better choice than a rather simple
data class.
Create functions to create books from rows

Each file has a different order of fields these simple methods are here
to make it possible to create a book instance from any known file.
Add a method to retrieve the whole list of books

The generator will create all book instances from the input files mapping
each book converter to the correct file.