You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python的Polars库中转换含非UTF-8字符的二进制为字符串变量

解决Polars二进制列转字符串时的非UTF-8字符报错问题

直接用cast(pl.String)转换二进制列时,Polars会以严格模式验证UTF-8编码,遇到无效字符就抛出错误。要实现将非UTF-8字符转为空白的需求,你可以使用Polars的str.from_utf8方法,它支持自定义错误处理策略。

解决方案代码

import polars as pl
import pandas as pd

pd_df = pd.DataFrame([[b"bob", b"value 2", 3], [b"jane", b"\xc4", 6]], columns=["a", "b", "c"])
df = pl.from_pandas(pd_df)

column_names = df.columns

for col_name in column_names:
    if df[col_name].dtype == pl.Binary:
        print(col_name)
        # 先将二进制按UTF-8解码,无效字符替换为占位符后再转为空白
        df = df.with_columns(
            pl.col(col_name).str.from_utf8(errors='replace').replace('\ufffd', '')
        )

print(df)

关键说明

  • str.from_utf8(errors='replace'):将二进制数据按UTF-8解码,无法识别的无效字节会被替换为Unicode占位符�(U+FFFD)
  • .replace('\ufffd', ''):把占位符替换成空白,达到你需要的非UTF-8字符转为空白的效果
  • 若想直接忽略无效字符,可将errors设为'ignore',这样会直接丢弃无法解码的字节,无需额外替换:
    pl.col(col_name).str.from_utf8(errors='ignore')
    

内容的提问来源于stack exchange,提问作者J Egg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 16:03:13