如何在Polars中使用"\s+"作为read_csv分隔符处理多空格数据?
解决Polars读取多空格分隔文件的问题
问题原因
- Polars的
pl.read_csv默认不支持多字符或正则表达式作为分隔符(这和Pandas的行为不同),所以直接用sep='\s+'会触发长度超限的报错。 - 你误用了
orient='col'参数——Polars的read_csv并不包含这个参数,这也是导致读取结果异常的原因之一。
解决方案
根据你的文件情况,有两种可行的处理方式:
方式一:指定固定7个空格作为分隔符
既然文件的实际分隔符是连续7个空格,直接将sep设置为7个空格即可:
import polars as pl df = pl.read_csv(file_dir, skip_rows=1, sep=' ') # 此处为连续7个空格
方式二:用Python引擎支持正则分隔符
如果后续文件的分隔符可能是任意数量的空白(不局限于7个),可以指定engine='python'来启用正则表达式分隔:
import polars as pl df = pl.read_csv(file_dir, skip_rows=1, sep=r'\s+', engine='python')
两种方式都能得到和Pandas一致的3行8列DataFrame。
内容的提问来源于stack exchange,提问作者8mrsteel
相关产品推荐
相关产品推荐

