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

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

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

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

# Reads only the medata to get information 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的问题

相关文章

Python中的函数(二) 在上一篇文章中提到了Python中函数的定...
Python中的字符串 可能大多数人在学习C语言的时候,最先接触...
Python 面向对象编程(一) 虽然Python是解释性语言,但是它...
Python面向对象编程(二) 在前面一篇文章中谈到了类的基本定...
Python中的函数(一) 接触过C语言的朋友对函数这个词肯定非...
在windows下如何快速搭建web.py开发框架 用Python进行web开发...