格式错误的CSV引用

时间:2015-12-19 10:30:02

标签: python csv import sas export

我使用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模块直接读取数据集,大大提高了性能。我摆脱了上面的问题。

1 个答案:

答案 0 :(得分:0)

如果值中已有引号,则SAS会添加额外的引号。

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

生成此结果:

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

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