Python3中如何替换字符串中的非ASCII字符并返回字符串类型
问题原因
Python3里str.encode()方法返回的是bytes字节类型,不是字符串类型,你现在的写法只完成了编码时过滤非ASCII字符的步骤,没有转回字符串,自然拿不到想要的结果。
实现方法
直接删除所有非ASCII字符
编码过滤后再解码回ASCII字符串,就能得到字符串类型的结果:
body = "ALYSS - PYRAMID ♅" newbody = body.encode('ascii', 'ignore').decode('ascii')
运行后newbody的值为"ALYSS - PYRAMID ",是标准的str类型。
把非ASCII字符替换成指定占位符
如果不想直接删掉非ASCII字符,想统一替换成?之类的固定字符,可以直接逐字符判断ASCII范围处理:
body = "ALYSS - PYRAMID ♅" # 把'?'换成你需要的占位符即可 newbody = ''.join(c if ord(c) < 128 else '?' for c in body)
运行后newbody的值为"ALYSS - PYRAMID ?",类型为字符串。
内容的提问来源于stack exchange,提问作者manguitoclasico
相关产品推荐
相关产品推荐

