【问题标题】:Python equivalent of php FILTER_FLAG_STRIP_HIGHPython 相当于 php FILTER_FLAG_STRIP_HIGH
【发布时间】:2018-09-05 20:46:33
【问题描述】:

使用 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) 这样的东西会起作用,因为它可以删除所有大于 127 的高 ASCII 值。

python中有这样的功能吗?

【问题讨论】:

    标签: php python utf-8 ascii data-cleaning


    【解决方案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 范围之外的值,因此永远不会去除部分字符。它可能不适用于其他编码。

    【讨论】:

      猜你喜欢
      • 2012-12-03
      • 2011-10-10
      • 2010-10-28
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多