繁体   English   中英

CSV报价格式错误

[英]Malformed CSV quoting

我使用CSV格式将数据从SAS传递到Python。 SAS使用的报价格式有问题。 未引用诸如"480 КЖИ" ОАО类的字符串,但Python csv模块认为它们已被引用。

dat = ['18CA4,"480 КЖИ" ОАО', '1142F,"""Росдорлизинг"" Российская дор,лизинг,компания"" ОАО"']
for i in csv.reader(dat):
    print(i)
>>['18CA4', '480 КЖИ ОАО']
>>['1142F', '"Росдорлизинг" Российская дор,лизинг,компания" ОАО']

第二个字符串很好,但是我需要480 КЖИ ОАО字符串才能成为"480 КЖИ" ОАО csv模块中找不到这样的选项。 也许可以强制proc export引用所有"字符”?

UPD:这是一个类似的问题Python CSV:在 UPD2 开头包含引号的字段 :@Quentin要求提供详细信息。 它们是:我已将SAS8.2连接到9.1服务器。 我从服务器端以proc format cntlout=..; proc download..下载自定义格式的数据proc format cntlout=..; proc download.. proc format cntlout=..; proc download.. 所以我得到了一个类似字典的数据集<key>, <value> 然后,我使用proc export通过CSV格式将此数据集通过DDE接口传递给Python。 但是proc export仅引用我理解的包含定界符(逗号)的字符串。 因此,我认为,我也需要SAS引用引号,或者需要Python取消引用仅包含逗号的字符串。

更新:使用经过修改的SAS7BDAT Python模块,从通过DDE的proc export切换为直接读取数据集,从而极大地提高了性能。 而且我摆脱了上面的问题。

如果值中已包含引号,则SAS将添加额外的引号。

data _null_;
  file log dsd ;
  string='"480 КЖИ" ОАО';
  put string;
run;

产生此结果:

"""480 КЖИ"" ОАО"

也许在从SAS到Python的流程中的某些其他地方删除了引号? 尝试将CS​​V文件保存到磁盘,然后从磁盘文件中读取Python。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM