使用encode('ascii','ignore')无法移除非ASCII字符,遇b''格式问题求助
移除DataFrame列中非ASCII字符并避免bytes格式的解决方法
你遇到的b'...'格式问题,是因为str.encode('ascii','ignore')会把字符串转换成bytes类型,而非普通字符串。解决这个问题只需要在编码后再解码回字符串即可,或者换一种更直接的正则替换方式:
方法一:编码后解码
在encode之后调用str.decode('ascii'),将bytes对象转回字符串:
df['column_name'] = df['column_name'].str.encode('ascii', 'ignore').str.decode('ascii')
这样处理后,'©lekd'会直接变成'lekd',不再带有b前缀。
方法二:正则直接替换非ASCII字符
可以用正则表达式匹配所有不在ASCII范围内的字符(\x00-\x7F是ASCII字符的十六进制范围),直接替换为空字符串:
df['column_name'] = df['column_name'].str.replace(r'[^\x00-\x7F]', '', regex=True)
这种方式不需要经过编码解码的步骤,逻辑更直观,效果和方法一完全一致。
内容的提问来源于stack exchange,提问作者Ambreen
相关产品推荐
相关产品推荐

