【问题标题】:Converted bytes to string then unable to print string将字节转换为字符串然后无法打印字符串
【发布时间】:2020-07-01 01:20:49
【问题描述】:

我很难将字节从 PDF 转换为字符串。当我运行代码时,它说它转换为类str,但是当我尝试打印它时,我得到了这个错误:

UnicodeEncodeError: 'charmap' codec can't encode character '\uf0b7' in position 432: character maps to <undefined>

我已经尝试了十几个设置的“解码”功能,在 unicode 转换格式之后没有“忽略”或“反斜杠”就无法工作。

我希望能够打印和使用该字符串,但最终我想计算 PDF 中关键字的出现次数。有没有更好的方法来做到这一点而不涉及转换为字符串?

def pdf_to_text(path):
    manager = PDFResourceManager()
    retstr = BytesIO()
    layout = LAParams(all_texts=True)
    device = TextConverter(manager, retstr, laparams=layout)
    filepath = open(path, 'rb')
    interpreter = PDFPageInterpreter(manager, device)

    for page in PDFPage.get_pages(filepath, check_extractable=True):
        interpreter.process_page(page)

    text = retstr.getvalue().lower()
    filepath.close()
    device.close()
    retstr.close()
    text_str = text.decode('utf-8', 'ignore')
    print(type(text_str))
    print(text_str)
    return text

【问题讨论】:

    标签: python string byte


    【解决方案1】:

    我在 google 上搜索过,发现这个 '\uf0b7' 字符是一个 printatl 字符。 我相信您可以在没有此字符的情况下从 PDF 打印文本,因为它是 PDF 协议的一部分。因此,如果您删除此字符,它可能会对您有所帮助。 试试这个网站:Removing all invalid characters (e.g. \uf0b7) from text

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      相关资源
      最近更新 更多