[英]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的流程中的某些其他地方删除了引号? 尝试将CSV文件保存到磁盘,然后从磁盘文件中读取Python。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.