Удаление цитат в поле в csv-файле

Допустим, у нас есть файл с разделителями-запятыми (csv):

"name of movie","starring","director","release year" "dark knight rises","christian bale, anna hathaway","christopher nolan","2012" "the dark knight","christian bale, heath ledger","christopher nolan","2008" "The "day" when earth stood still","Michael Rennie,the 'strong' man","robert wise","1951" "the 'gladiator'","russel "the awesome" crowe","ridley scott","2000" 

Как видно из вышеизложенного, в строках 4 и 5 в кавычках есть кавычки. Результат должен выглядеть примерно так:

 "name of movie","starring","director","release year" "dark knight rises","christian bale, anna hathaway","christopher nolan","2012" "the dark knight","christian bale, heath ledger","christopher nolan","2008" "The day when earth stood still","Michael Rennie,the strong man","robert wise","1951" "the gladiator","russel the awesome crowe","ridley scott","2000" 

Как избавиться от таких кавычек (как одиночных, так и двойных), которые встречаются в кавычках, подобных этому в файле csv. Обратите внимание, что запятая в пределах одного поля в порядке, поскольку анализатор идентифицирует, что он находится в кавычках, и принимает его как одно поле. Это всего лишь шаг предварительной обработки компоновки файлов csv, чтобы его можно было подавать в несколько парсеров для преобразования в любой желаемый формат. Bash, awk, python все работает. Пожалуйста, нет, я устал от этого языка: D Спасибо заранее!

3 Solutions collect form web for “Удаление цитат в поле в csv-файле”

Как насчет

 import csv def remove_quotes(s): return ''.join(c for c in s if c not in ('"', "'")) with open("fixquote.csv","rb") as infile, open("fixed.csv","wb") as outfile: reader = csv.reader(infile) writer = csv.writer(outfile, quoting=csv.QUOTE_ALL) for line in reader: writer.writerow([remove_quotes(elem) for elem in line]) 

который производит

 ~/coding$ cat fixed.csv "name of movie","starring","director","release year" "dark knight rises","christian bale, anna hathaway","christopher nolan","2012" "the dark knight","christian bale, heath ledger","christopher nolan","2008" "The day when earth stood still","Michael Rennie,the strong man","robert wise","1951" "the gladiator","russel the awesome crowe","ridley scott","2000" 

Кстати, вы можете проверить правописание некоторых из этих имен.

Разделите значения в массив. Итерируйте через массив, удаляя любые кавычки, отличные от первого и последнего символов. Надеюсь, поможет.

С awk вы можете сделать что-то вроде:

 awk -v Q='"' '{ gsub("[\"']","") ; gsub(",",Q "," Q) ; print Q $0 Q }' 
  • Попросите csv.reader указать, когда он находится на последней строке
  • Как распечатать count of occourance некоторой строки в том же файле CSV с помощью Python?
  • Сравнение первых столбцов в двух файлах csv с использованием совпадений python и печати
  • Python: сплит-файлы с использованием разделителей с несколькими разделителями
  • Почему этот код вызывает csv.Error?
  • Повторная выборка нескольких файлов CSV и автоматическое сохранение повторно выбранных файлов с новыми именами
  • чтение строк большого файла csv в python
  • Python Pandas Ошибка для токенизации данных
  • pandas to_csv аргументы float_format и десятичные числа не работают для столбца индекса
  • Доступ к данным столбцов из файла CSV в Python
  • Загрузка большого CSV-файла с помощью pandas
  • Python - лучший язык программирования в мире.