我使用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 : field containing quotation mark at the beginning
UPD2:@Quentin要求提供详细信息。他们在这里:我将SAS8.2连接到9.1服务器。我使用proc format cntlout=..; proc download..
从服务器端下载自定义格式数据。所以我得到一个类似字典的数据集<key>, <value>
。然后我使用proc export
通过DDE接口将此数据集以CSV格式传递给Python。但proc export
仅引用包含分隔符(逗号)的字符串,据我所知。所以我认为,我需要SAS引用引号或Python只能引用包含逗号的字符串。
更新:通过DDE从proc export
切换到使用修改后的SAS7BDAT Python模块直接读取数据集,大大提高了性能。我摆脱了上面的问题。
答案 0 :(得分:0)
如果值中已有引号,则SAS会添加额外的引号。
data _null_;
file log dsd ;
string='"480 КЖИ" ОАО';
put string;
run;
生成此结果:
"""480 КЖИ"" ОАО"
也许在从SAS到Python的流程中的某些其他方面删除了引号?尝试将CSV文件保存到磁盘并从磁盘文件中读取Python。