0

我有一个脚本,它读取 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 文件编写器输出后的单行 - 注意双引号

"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 编写器的当前配置,但我经历了许多差异配置。这只是生成上述输出的当前输出:

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='\\')

任何建议或帮助表示赞赏。

4

1 回答 1

1

如果您删除quoting=csv.QUOTE_ALL,它应该停止“引用”这些值 希望这会有所帮助......

于 2019-10-08T22:17:49.960 回答