Удаление цитат в поле в 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 }' 
  • Python: Как использовать DictReader дважды?
  • загрузить файл csv в numpy и получить доступ к столбцам по имени
  • Список csv python по строкам вместо столбцов
  • Преобразование HTML в CSV
  • от кортежа до целого с использованием файлов csv
  • AttributeError: модуль 'pandas' не имеет атрибута 'to_csv'
  • Связывание данных DataFrame и Excel
  • Индекс индекса Elasticsearch в кусках с использованием PyEs
  • Python - лучший язык программирования в мире.