首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我得到的是"ق“而不是"fi"?

为什么我得到的是"ق“而不是"fi"?
EN

Stack Overflow用户
提问于 2015-01-12 09:39:23
回答 1查看 127关注 0票数 2

我从文档中提取了文本,并注意到该文本包含一些未知字符,例如:

代码语言:javascript
复制
"An adversary modiقes the aggregation result"

很明显,ق不是真正的字符,应该用"fi“代替--还有其他类似的例子。

我可以使用python将这些字符替换为正确的英文字符吗?

我写了下面的代码来从pdf文件中提取和解码文本流:

代码语言:javascript
复制
import zlib

file = open ("PDF_File.pdf"."rb").read()  # read pdf file
objectPDF = re.findall('(\d+ \d+ obj.+?endobj)',file , re.DOTALL) # extract pdf 
                                                                   # objects
for item in objectPDF :
    pdfstreams = re.findall('stream(.*?)endstream',item  , re.DOTALL) # extract text 
                                                                      # stream 
                                                                      # encoded by                     
                                                                   # flatedecode filter
for item in pdfstreams :                                          
    buffer = item  
    decomp = zlib.decompress(buffer)   # decode each stream
    pdf_txt = open("Txt_PDF.txt","w")  
    pdf_txt .write(decomp)             # write the text to file
    pdf_txt .close()
EN

回答 1

Stack Overflow用户

发布于 2015-01-13 02:46:04

你有一个编码错误:

代码语言:javascript
复制
>>> print u"modiقes".encode("cp1256").decode("mac_roman")
modifies

注意,违规字符不是损坏一对字符fi的结果,而是损坏单个字符 (U+FB01 'LATIN SMALL LIGATURE FI')的结果。

如果看不到您的代码,就不可能确切地说出这是如何发生的,但它可以归结为:您试图将Mac OS Roman文本解码为Windows 1256。如果你停止这样做,你就不会再有问题了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27894201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档