Избегайте двойных кавычек с помощью двойной кавычки - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь заставить csv writer использовать двойную кавычку в качестве escape-символа и добавить двойную кавычку к двойной кавычке, если она появляется в поле данных.

Моя функция является частью Apache Задание потока данных луча.

Любые советы приветствуются.

Входная запись: "ab" c "," def "

Фактический вывод моей функции возвращает: ab c ", def

Результат, который я пытаюсь достичь" ab c "" ", def

Входной файл может содержать такие записи:

1, «mystring1», «mystring2» 2, «mystring3», «mystring4» 3, "myst" ring5 "," mystring6 "

Запись уведомления 3 имеет двойную кавычку в поле.

Я бы хотел избежать этой двойной кавычки, добавив поставьте перед ним двойные кавычки, затем укажите в кавычках все поле.

1, mystring1, mystring2 2, mystring3, mystring4 3, "myst" "ring5", mystring6

Функция, которую я вызываю

def parse_file(element):
      for line in csv.reader([element], quotechar='"', delimiter=','):
          output_str = io.StringIO()
          cw = csv.writer(output_str, quotechar='"', delimiter=',', escapechar='"', quoting=csv.QUOTE_MINIMAL)
          cw.writerow(line)
          output_str.close()
          clean_line = ', '.join(line)
          return clean_line

1 Ответ

0 голосов
/ 06 августа 2020

Вот простое решение, которое принимает входной элемент строки типа.

vec = str('"ab"c","def""')
print(list(map(lambda x: '"' + x + '"' if '""' in x else x, [y.strip('"').replace('"', '""') for y in vec.split(',')])))

Если я что-то понял, прошу прощения

...