Python相当于php FILTER_FLAG_STRIP_HIGH

问题描述 投票:0回答:1

使用OCR解析从pysical表单转换的大量低质量数据的数据集,并使用PostgreSQL COPY将.csv文件插入到psql中。一些记录有ASCII字节导致错误导入postgres,因为我想要UTF-8 varchar()中的数据,因为我相信使用TEXT类型列不会产生此错误。

DataError: invalid byte sequence for encoding "UTF8": 0xd6 0x53
CONTEXT:  COPY table_name, line 112809

我想在写入csv文件之前过滤所有这些字节。

我相信像PHP的FILTER_FLAG_STRIP_HIGH(http://php.net/manual/en/filter.filters.sanitize.php)这样的东西可以工作,因为它可以删除所有高的ASCII值> 127。

python中有这样的功能吗?

php python utf-8 ascii data-cleaning
1个回答
1
投票

将您的字符串编码为ASCII,忽略错误,然后将其解码回字符串。

text = "ƒart"
text = text.encode("ascii", "ignore").decode()
print(text)     # art

如果您使用UTF-8中的字节字符串开头,那么您只需解码它:

bites = "ƒart".encode("utf8")
text = bites.decode("ascii", "ignore")
print(text)     # art

这特别适用于UTF-8,因为多字节字符总是使用ASCII范围之外的值,因此从不剥离部分字符。它可能不适用于其他编码。

© www.soinside.com 2019 - 2024. All rights reserved.