我有一个文件夹,我想从中读取所有文本文件并将它们放入语料库,但是我只能使用.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())
什么都不读。
答案 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/的页面为起点。