2024-06-28 20:30:55 发布
网友
我对PDFminer不熟悉。我注意到在使用PDFminer get_text()命令时,有些符号/标点符号不是以文本形式输出的。例如,“-”显示为“\xe2\x80\x93”,单引号显示为“\xe2\x80\x99”。以下是我使用的命令:
打印(LTTextLine.get\u文本().encode('UTF-8'))
有人能帮我理解如何读这些,并把它转换成文字形式吗?你知道吗
谢谢。你知道吗
您不喜欢的十六进制转义不是连字符(ascii39)和单引号(ascii45)。它们是排版连字符(又称破折号)–(Unicode 2010)和右单引号’(Unicode 2019)。它们被编码为UTF-8。如果要对它们进行解码,请将包含它们的字符串视为字节,而不是字符串(请注意b前缀):
–
’
b
>>> mystring = b"This is an en\xe2\x80\x93dash and this - isn\xe2\x80\x99t" >>> mystring.decode('UTF8') 'This is an en–dash and this - isn’t'
如果Python认为数据已经是一个字符串,如下所示,没有b前缀,那么您需要让它相信它确实是字节,并对结果进行解码:
>>> mystring = "This is an en\xe2\x80\x93dash and this - isn\xe2\x80\x99t" >>> bytes(mystring.encode("latin-1")).decode("UTF-8") 'This is an en–dash and this - isn’t'
在所使用的字体中,ascii39和Unicode 2010之间没有太大的明显区别,但一般来说,排版连字符比ASCII连字符短、粗,更接近基线。另外两个之间的区别在法律上是相当清楚的 isn’t'。在.pdf文件中找到Unicode变体是很常见的,因为它们是用来打印的。ASCII变体实际上只适用于程序代码和旧打字机的模拟,而不适用于印刷书籍和杂志。你知道吗
isn’t'
.pdf
您不喜欢的十六进制转义不是连字符(ascii39)和单引号(ascii45)。它们是排版连字符(又称破折号)
–
(Unicode 2010)和右单引号’
(Unicode 2019)。它们被编码为UTF-8。如果要对它们进行解码,请将包含它们的字符串视为字节,而不是字符串(请注意b
前缀):如果Python认为数据已经是一个字符串,如下所示,没有
b
前缀,那么您需要让它相信它确实是字节,并对结果进行解码:在所使用的字体中,ascii39和Unicode 2010之间没有太大的明显区别,但一般来说,排版连字符比ASCII连字符短、粗,更接近基线。另外两个之间的区别在法律上是相当清楚的
isn’t'
。在.pdf
文件中找到Unicode变体是很常见的,因为它们是用来打印的。ASCII变体实际上只适用于程序代码和旧打字机的模拟,而不适用于印刷书籍和杂志。你知道吗相关问题 更多 >
编程相关推荐