用Python划分和征服列表使用pyreadstat读取sav文件

我试图在python中使用pyreadstat读取sav文件,但在某些罕见情况下,由于字符串变量具有特殊字符,我会收到UnicodeDecodeError错误

解决这一问题,我认为与其加载整个变量集,不如加载不具有此错误的变量。

下面是我随身携带的伪代码。这不是一个非常有效的代码,因为我使用try和except检查列表的每个项目中的错误

# Reads only the medata to get @R_408_4045@ion about the variables
df,Meta = pyreadstat.read_sav('Test.sav',Metadataonly=True)
list = Meta.column_names # All variables are stored in list
result = []
for var in list:
    print(var)
    try:
        df,usecols=[str(var)]) 
        # If no error that means we can store this variable in result
        result.append(var)
    except:
        pass
# This will finally load the sav for non error variables
df,usecols=result) 

对于具有1000多个变量的sav文件,需要花费大量时间来处理。 我当时在想是否有办法使用分而治之的方法,并且可以更快地做到这一点。下面是我建议的方法,但是我在实现递归算法方面不是很好。有人可以用伪代码帮助我吗?

  1. 获取列表并尝试读取sav文件
  2. 如果没有错误,则可以将输出存储在结果中,然后我们读取sav文件
  3. 如果发生错误,则将列表分为两部分,然后再次运行....
  4. 第3步需要再次运行,直到我们有一个列表没有给出任何错误为止

使用第二种方法时,我的90%的sav文件将在第一遍本身中加载,因此我认为递归是一个方法

您可以尝试重现sav文件here的问题

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...