阅读多个文本文件扩展名.pdf,.txt和.htm

时间:2019-07-13 15:34:11

标签: python

我有一个文件夹,我想从中读取所有文本文件并将它们放入语料库,但是我只能使用.txt文件来做。如何扩展下面的代码以读取.pdf,.htm和.txt文件?

corpus_raw = u""
    for file_name in file_names:
        with codecs.open(file_name, "r", "utf-8") as file_name:
            corpus_raw += file_name.read()
        print("Document is {0} characters long".format(len(corpus_raw)))
        print()

例如:

with open ('/data/text_file.txt', "r", encoding =  "utf-8") as f:
    print(f.read())

读入数据,以便在笔记本上查看。

with open ('/data/text_file.pdf', "r", encoding =  "utf-8") as f:
    print(f.read())

什么都不读。

2 个答案:

答案 0 :(得分:1)

文件有两种类型,二进制文件和纯文本文件。一个文件可以有一个,也可以有两个。

HTML文件是纯文本,人类可读的文件,您可以手动编辑它们,而PDF文件是二进制+文本文件,需要特殊程序对其进行编辑。

如果您想阅读pdf或html,则可以。我不确定您是要提取文本还是提取源代码,因此我将为这两者提供解释。

提取文字

对于html文件,可以轻松提取文本。使用webbrowser,可以在浏览器中打开文件,然后使用urllib提取文本。有关更多信息,请参考此处的答案:Extracting text from HTML file using Python

对于pdf文件,您可以使用一个称为PyPDF2的python模块。使用pip下载: $ pip install PyPDF2 并开始。 这是我在互联网上找到的一个简单程序的示例:

import PyPDF2 

# creating a pdf file object 
pdfFileObj = open('example.pdf', 'rb') 

# creating a pdf reader object 
pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 

# printing number of pages in pdf file 
print(pdfReader.numPages) 

# creating a page object 
pageObj = pdfReader.getPage(0) 

# extracting text from page 
print(pageObj.extractText()) 

# closing the pdf file object 
pdfFileObj.close() 

提取源代码

像上面一样,最好使用python的open函数来提取源代码。 对于html文件,您可以执行与文本文件相同的操作。或者也许更简单

file = open("c:\\path\\to\\file")
print(file.read())

您可以执行上述操作。

对于pdf文件,您执行的操作几乎相同,但是在open函数中使用不同的参数指定编辑模式。有关更多信息,请访问“更多信息”部分中的网站。

file = open("c:\\path\\to\\file.extension", "a") #specifies the mode of editing. Unfortunately, you'll only be able to store data, not display it. But you can edit it, then save it after wards
print(file.readable()) #Will return false, proving to be not readable.
file.save("c:\\path\\to\\save\\in.extension")

更多信息

答案 1 :(得分:-1)

这对于htm / html文件应该没有问题-它们基本上只是文本文件。上面,我只看到.pdf读取失败-.htm是否存在问题?

此外,阅读.pdf可能比您想象的要难/容易得多。 pdf包含的信息不只是纯文本,而且不能在记事本中进行有意义的编辑。举例说明,这是我在记事本中打开.pdf时得到的一小部分示例:

%PDF-1.7
%âãÏÓ
1758 0 obj
<</Filter/FlateDecode/First 401/Length 908/N 51/Type/ObjStm>>stream
hÞ”ØQk\7à¿2ÍK,i4
Cã(Á”¾•–öâ.Ýn‚w]òó3rm˜Ÿ =ÄÜÝèΑ®?ÉÍ…e¦ê?Å/2e¥ÂJÙˆ+SÉT«ù7$"T„ZËT”´ù2£®L~©¯fÊ©±É–iÌ(¦ÄF¹&OðÑ’Œ|hnžU}Žñ¾®ûDOÉæCÄç'¿IF¸/±Å¿”±/ÿ!¾›Ú˜Æ>¤ùeiêóuÚ3õ®äU̘Է’Ìhì´$!_Êœ3©o­úaÇÖÅÏç·rGòuê‡Gé¾é>Žà›ì¾õä›ò£Õì›ðѵx¨ùQXÇ3ð'åC=ªJÃ6óç:¯Öý—ZòóúI¹ù…Ÿ3—ñ$<Éw‘èÍ›«›/dz/¸z¿¿?Ço'ÑoW¿îÆõX矮¯}Ý»ítþ#?~ö¥ç_ü”×éÓÕÇíÛyü6Ç÷·»û͇åòøé÷ýù°ýôöá´?n§}8ž·Ãa·ÿÜ>ßÞo‡ý¿§Wat£õ…Ñ~ûÏ[ýQÌÍß»¯çížRŽI
$L’ù¤“úËI%Ã$OâTHb˜dóI5&$(éé´SI“€ˆE”-&Š("4&E”=$1ÁPDYa1   ˆ`(‚çEä“€†"x^DŽÁ@C</"ÇŽ` ¢B</"ÇŽ¨@D…"x^DŽQˆ
EÔ±#*Q¡ˆº "vD"*QDÄŽ¨@„@uADì"Š¨"bG!P„Ì‹(±#ˆ(BæE”ØD!ó"Jì"!ó"JìˆD4(BæE”Ø
ˆhPD[;¢
Šh"bG4 ¢AmADìˆD(ÑDÄŽP B¡ˆ¶ "v„
E輎¡@„B:/‚cG(¡P„΋àØ
Dt(BçEpìˆDt(BçEpìˆDt(¢/ˆˆÑˆEô±#:Ñ¡ˆ¾ "vD"Šè"bGaPD_;€ƒ"l^Da@„A6/¢ÆŽ0  ›QcG1Þ¡¨y5–DN    eA6¢Ö‹¬‚² ‹ç#O…ÉEzQ•ð›ª´@£]„¡wU ¿¬J:ô"ñPüŸÑçSÿ(íÃñ¯íÛÿA?û°§7¿8ìBÀawü‡nww›ßû]€ %“xw
endstream
endobj
1759 0 obj
<</Filter/FlateDecode/First 1907/Length 3450/N 200/Type/ObjStm>>stream

但是,有一些选项。我建议您以https://www.geeksforgeeks.org/working-with-pdf-files-in-python/的页面为起点。