Как избежать разделения по разделителю, если он появляется внутри кавычек?

#python

#python

Вопрос:

У меня проблема с разделением данных. У меня есть следующие данные в файле CSV:

 "a";"b";"c;d";"e"
  

Проблема в том, что когда я использовал line.split(";") функцию, она разделяется даже между c и d . Я не хочу, чтобы c и d были разделены. Позже мне нужно сохранить эти четыре значения в четырех разных столбцах таблицы, но с помощью этой функции я получаю пять разных столбцов.

Я хочу, чтобы результаты были "a" "b" "cd" "e" .

Я пробовал с line.split('";"') , но это не помогло.

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

1. Используйте csv модуль для синтаксического анализа CSV-файла.

2. Почему ; между c d должно быть удалено?

Ответ №1:

 import csv
reader = csv.reader(open("yourfile.csv", "rb"), delimiter=';')
for row in reader:
    print row
  

Попробуйте это.

 import csv
reader = csv.reader(open("yourfile.csv", "rb"), delimiter=';', quoting=csv.QUOTE_NONE )
for row in reader:
    print row
  

Это ^^^ если вы хотите сохранить кавычки

Редактировать: Если вы хотите ';' удалить содержимое поля ( 'c;d' = 'cd' регистр) — вы можете выполнить постобработку возвращаемых строк, что-то вроде этого:

 import csv
reader = csv.reader(open("yourfile.csv", "rb"), delimiter=';', quoting=csv.QUOTE_NONE )
for row in reader:
    print [item.replace(';', '') for item in row]   
  

Ответ №2:

В других контекстах может использоваться функция shlex.split()

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

1. Как он может быть разделен по разделителю, отличному от пробельного?