Чтение строки Pandas CSV с двойными кавычками внутри

#pandas #csv

#pandas #csv

Вопрос:

У меня возникли проблемы при обработке файла csv в таком формате :

«Идентификатор заказа», «Статус заказа», «Дата заказа», «Адрес», «Всего»

«10000», «Доставлено»,»07/10/2020 05:44″, » Перед «МИНИМАРКЕТОМ СУПЕРМЕНА» затем поверните направо», «10.0000»

Если я делаю: pd.read_csv(file.csv, sep = ',') результат

Ошибка токенизации данных. Ошибка C: ожидалось 4 поля в строке 1, увидел 10

Проблема возникает, когда у меня есть двойные кавычки внутри строки в столбце адреса, например «МИНИМАРКЕТ СУПЕРМЕНА» с двойными кавычками внутри значения адреса = «Перед «МИНИМАРКЕТОМ СУПЕРМЕНА», затем поверните направо»

Любой совет о том, как прочитать этот файл csv?

Комментарии:

1. попробуйте без sep = ',' и укажите полное имя файла, включая расширение, что-то вроде file.csv

2. Извините за неясность, я отредактировал вопрос и указал, что проблема заключается в двойных кавычках внутри строковых значений в файлах csv. Спасибо

Ответ №1:

CSV, благослови их души, могут быть изворотливыми. Попробуйте, если это сработает — используя ваш путь к файлу вместо StringIO(s) :

 from io import StringIO
import csv
    
s="""
"Order ID","Order Status","Order Date","Address","Total"
"10000","Delivered","07/10/2020 05:44","In front of "SUPERMAN MINIMARKET" then turn right","10.0000"
"""
df = pd.read_csv(StringIO(s),
                 sep=',',
                 quoting=csv.QUOTE_ALL,
                 quotechar='"'
                )

#        Order ID Order Status        Order Date  
# 0     10000    Delivered  07/10/2020 05:44   
#     
#                                              Address  Total  
# 0  In front of SUPERMAN MINIMARKET" then turn right"   10.0  
  

Комментарии:

1. Спасибо, это работает так, как я хочу, но теперь я столкнулся с более серьезной проблемой. Когда регистр адресов превращается в «Перед МИНИМАРКЕТОМ «СУПЕРМЕН», затем поверните направо, Сент-Антонио-роуд, Вашингтон, округ Колумбия, США», оказывается, результат не такой, как я ожидал. Можете ли вы помочь мне в этом?

2. Какую ошибку вы получаете? Вы должны иметь возможность иметь запятые в строке, заключенной в кавычки (определяется quotechar и эти запятые игнорируются, если они являются разделителем.