Что я могу сделать, чтобы импортировать csv-файл в Python правильно, если у меня "#" обычно в качестве разделителя, но частично как часть заголовка? - PullRequest
0 голосов
/ 01 февраля 2020

Я импортирую этот CSV-файл в Python файл данных с разделителем "# {1}", следовательно, он насчитывает 13 столбцов, но у меня есть эта ошибка с несколькими строками:

"ParserError: Ожидаемые 13 полей в строке 803, п. 14. Возможно, ошибка может быть вызвана игнорированием кавычек при использовании разделителя с несколькими символами."

, и проблема заключается в том, что эти тревожные строки выглядят как этот "Revolution # 9 # 9118 #" 9118 "#" 350000 "# 15.11.2002 ### Триллер / Приостановка ##" "## 7,3 # 252"

, где "Revolution # 9" означает «Революция №9», просто название фильма, а не разделитель, хотя программа этого не понимает и из-за этого считает один лишний столбец. Учитель запрещает редактировать оригинальный CSV-файл, чтобы исправить это. Только с использованием кода.

Есть ли какой-нибудь код, который может редактировать этот CSV-файл в Python, заменяя этот знак в названии фильма другим? или другие способы решить эту проблему, пожалуйста?

Вот мой код, на всякий случай

import pandas as pd
movies=pd.read_csv('movies.csv', 
                   sep="#{1}",
                   names=["Title", "US Gross", "Worldwide Gross", "Production Budget", "Release Date", "Distributor", "Source", "Major Genre", "Creative Type","Director","Rotten Tomatoes Rating","IMDB Rating","IMDB Votes"],
                   engine='python',
                   skiprows=1)
movies = movies.replace(to_replace='"', value="", regex=True)
movies

1 Ответ

1 голос
/ 01 февраля 2020

Я думаю, что модуль csv.DictReader поможет вам. Вот непроверенный пример использования этого модуля

from csv import DictReader

with open(file_name, 'r') as csv_file:
    fieldnames = ["Title", "US Gross"] # Add all youre rows here
    csv_lines = csv.DictReader(csv_file, fieldnames=fieldnames, delimiter=',')
    for line in csv_lines:
        # Example how to access the column 'Title'
        title = line['Title']
        # here you can replace the content
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...