bounty将在23小时后过期。回答此问题可获得+100声望奖励。Wild Chemist希望吸引更多人关注此问题。
因此,我尝试使用python读取.sav文件并将其转换为. csv。我已经获得了读取.sav文件的代码,并且我还使用test .sav检查了它,我设法将其转换为csv。然后我继续使用真实的的.sav文件,而不是它不再工作。以下是代码:
import pyreadstat
df, meta = pyreadstat.read_sav('./RaceDatas.sav')
df.to_csv('BloodRace.csv', index=False)
错误如下:
runfile('C:/Users/usuario/Desktop/Python tests/ARK Projects/no.py', wdir='C:/Users/usuario/Desktop/Python tests/ARK Projects')
Traceback (most recent call last):
File "C:\Program Files\Spyder\pkgs\spyder_kernels\py3compat.py", line 356, in compat_exec
exec(code, globals, locals)
File "c:\users\usuario\desktop\python tests\ark projects\no.py", line 3, in <module>
df, meta = pyreadstat.read_sav('./RaceDatas.sav')
File "pyreadstat\pyreadstat.pyx", line 364, in pyreadstat.pyreadstat.read_sav
File "pyreadstat\_readstat_parser.pyx", line 1099, in pyreadstat._readstat_parser.run_conversion
File "pyreadstat\_readstat_parser.pyx", line 867, in pyreadstat._readstat_parser.run_readstat_parser
File "pyreadstat\_readstat_parser.pyx", line 797, in pyreadstat._readstat_parser.check_exit_status
ReadstatError: Invalid file, or file has unsupported features
有人知道问题出在哪里吗?我想可能是我正在试用的.sav的结构很奇怪,但它的结构很正常。
.sav本身为451 KB
我试着用一个简单的.sav文件,它像预期的那样工作。我试着用主代码,它不工作。我希望它至少把.sav变成一个python/pandas Dataframe ,然后变成一个.csv
2条答案
按热度按时间dldeef671#
这是解决方案,我希望它会有帮助。
5q4ezhmt2#
我找到了这个...
它被认为是数据是按观测顺序排列的,例如,第一次观测的所有变量值,后面是第二次观测的所有值,等等。数据记录的格式根据文件头记录中的压缩代码而变化。.sav文件的数据部分可以被解压缩:
我建议使用上下文管理器来读取文件,以避免.sav文件压缩的怪异。
此外...以下是pyreadstat.read_sav()方法的参数:
encoding(str,optional)-默认为None。如果设置,系统将使用定义的编码而不是猜测。它必须是与iconv兼容的名称
您的编码选项为['ASCII','EBCDIC','utf-8']
或