Попытка создать CSV-файл для автоматизации вокруг dokan_profile_settings, но возникли проблемы с цитированием. - PullRequest
0 голосов
/ 09 октября 2019

У меня есть скрипт, который считывает содержимое файла CSV, где я затем объединяю его с другими данными с целью создания выходного файла CSV, который содержит объединенные данные. У меня есть файл CSV, работающий нормально, и все данные попадают в выходной файл. Моя проблема связана с форматированием, специфичным для ячейки данных, которая содержит много полей, которые уже цитируются. Я не разобрался с опциями CSV и не могу найти конфигурацию, которая не заставляет меня использовать одинарные кавычки вокруг всего (что импорт в Dokan будет принимать, но не обрабатывать должным образом), или которая не удваивает двойные кавычки всего, что также нарушаетМеханизм импорта с Dokan.

Вот как выглядит элемент данных (не очень): Обратите внимание, что существует множество |поля с разделителями до и после - это всего лишь одно поле с именем "dokan_profile_setting"

'a:19:{s:10:"store_name";s:12:"vendor100";s:6:"social";a:8:{s:2:"fb";s:0:"";s:5:"gplus";s:0:"";s:7:"twitter";s:0:"";s:9:"pinterest";s:0:"";s:8:"linkedin";s:0:"";s:7:"youtube";s:0:"";s:9:"instagram";s:0:"";s:6:"flickr";s:0:"";}s:7:"payment";a:2:{s:6:"paypal";a:1:{i:0;s:5:"email";}s:4:"bank";a:0:{}}s:5:"phone";s:10:"1231231234";s:10:"show_email";s:2:"no";s:7:"address";a:6:{s:8:"street_1";s:21:"2160 South Lipan Street";s:8:"street_2";s:9:"";s:4:"city";s:6:"Denver";s:3:"zip";s:5:"80223";s:7:"country";s:2:"US";s:5:"state";s:2:"CO";}s:8:"location";s:0:"";s:6:"banner";i:0;s:4:"icon";i:0;s:8:"gravatar";i:0;s:14:"show_more_ptab";s:3:"yes";s:9:"store_ppp";i:10;s:10:"enable_tnc";s:3:"off";s:9:"store_tnc";s:0:"";s:23:"show_min_order_discount";s:2:"no";s:9:"store_seo";a:0:{}s:24:"dokan_store_time_enabled";s:3:"yes";s:23:"dokan_store_open_notice";s:0:"";s:24:"dokan_store_close_notice";s:0:"";}'

Если кавычки чистые - как указано выше - и не удвоены (см. ниже), импорт и использование работают нормально, ноя не могу заставить создание CSV оставить эти цитаты вместе, влияя на других в строке, которые должны быть указаны в кавычках.

Вот одна строка после вывода CSV filewriter - обратите внимание на двойные кавычки

"100"|"vendor100"|"vendor100@demotech.com"|"Piper"|"Smith"|"vendor100"|"vendor100"|"This is the imported shop data for XYZ LLC"|""|"no"|"a:19:{s:10:""store_name"";s:12:""vendor100"";s:6:""social"";a:8:{s:2:""fb"";s:0:"""";s:5:""gplus"";s:0:"""";s:7:""twitter"";s:0:"""";s:9:""pinterest"";s:0:"""";s:8:""linkedin"";s:0:"""";s:7:""youtube"";s:0:"""";s:9:""instagram"";s:0:"""";s:6:""flickr"";s:0:"""";}s:7:""payment"";a:2:{s:6:""paypal"";a:1:{i:0;s:5:""email"";}s:4:""bank"";a:0:{}}s:5:""phone"";s:10:""1231231234"";s:10:""show_email"";s:2:""no"";s:7:""address"";a:6:{s:8:""street_1"";s:21:""2160 South Lipan Street"";s:8:""street_2"";s:9:"""";s:4:""city"";s:6:""Denver"";s:3:""zip"";s:5:""80223"";s:7:""country"";s:2:""US"";s:5:""state"";s:2:""CO"";}s:8:""location"";s:0:"""";s:6:""banner"";i:0;s:4:""icon"";i:0;s:8:""gravatar"";i:0;s:14:""show_more_ptab"";s:3:""yes"";s:9:""store_ppp"";i:10;s:10:""enable_tnc"";s:3:""off"";s:9:""store_tnc"";s:0:"""";s:23:""show_min_order_discount"";s:2:""no"";s:9:""store_seo"";a:0:{}s:24:""dokan_store_time_enabled"";s:3:""yes"";s:23:""dokan_store_open_notice"";s:0:"""";s:24:""dokan_store_close_notice"";s:0:"""";}"|"vendor100"|"no"|"Piper"|"Smith"|"XYZ LLC 100"|"2160 South Lipan Street"|""|"Denver"|"CO"|"80223"|"US"|"vendor100@demotech.com"|"(123) 123-1234"|""|"percentage"|"yes"|"39.6773216"|"-105.0014567"|"1"|"2160 South Lipan Street, Denver, CO, 80223, USA"|""|""|""|"yes"|"yes"|"CO"|"404-00411"|"vendor100"|"1231231234"|"a:6:{s:8:""street_1"";s:15:""2160 South Lipan Street"";s:8:""street_2"";s:0:"""";s:4:""city"";s:6:""Denver"";s:5:""state"";s:2:""CO"";s:3:""zip"";s:5:""80223"";s:14:""country_select"";s:2:""US"";}"|""|"seller"|"$P$B8l8bYi8oIwINynO/x3Lb/80vOUfGD."|"0"

Вот текущая конфигурация моего csv-писателя, но я прошел через многие конфигурации diff. Это как раз тот, который генерирует вывод выше:

with open(demo_co_vendors, 'w', newline='', encoding='utf-8') as csvfile:
    filewriter = csv.writer(csvfile, delimiter='|', quoting=csv.QUOTE_ALL, quotechar='"', doublequote="false", escapechar='\\')

Любой совет или помощь приветствуются.

1 Ответ

1 голос
/ 09 октября 2019

Если вы удалите quoting=csv.QUOTE_ALL, он должен прекратить "цитирование" значений Надеюсь, это поможет ...

...