① 怎麼啟動python解釋器
1.首先找到本地python安裝位置,若找不到可直接搜索「python」,復制「python.exe」執行文件的所在目錄,如下:
注意事項:
python2.x下為:print "Hello World"
python3.x下print需要加「()」:print ("Hello World")
② python如何讀取word文件中的文本內容並寫入到新的txt文件
③ Python Word文檔處理 上篇:python-docx
某天我收到一個需求:希望能夠用python對word文檔進行一些處理,比如更換一些文字以及添加批註。
簡單搜索後,我發現 python-docx 是一個處理docx文檔的常用python庫,因此我打算用它來進行進一步開發。
官方文檔 提供了一個簡單的示例
python-docx 將文檔抽象為document對象、paragraph對象以及run對象,提供了圍繞這些對象進行簡單處理的API
然而在文檔中並沒有出現關於批註操作的部分,我在搜尋 一些文章 後發現了在某個 issue 中提及了添加批註相關信息,然而還是沒有得到具體的解決辦法
docx文檔底層是由XML文件組成的
我們可以將一個 xx.docx 文件的後綴名改為 .rar 然後將其手動解壓,可以得到下面這些文件
在諸多文件當中主要用到的是 document.xml 文件,這里保存了文檔的內容
打開一份 document.xml 文件,拋開header、footer、table以及其他特殊項,去掉樣式等修飾項,一份樸素的docx文檔主要可以分為三個部分:paragraph、run、text
paragraph即段落,就是我們在word當中看到的一段。text即文本,就是真實的內容。run比較抽象,我們可以將其理解為片段,即語句的切分。
為了更好地理解run是什麼,打開一篇word文檔定位其中一句話
讓我們看看這篇文檔解壓之後的 document.xml 文件中對應的部分
OK,我們可以看到原本完整的一句話在word中被拆分成了許多個 <w:r> 標簽,這就是 run ,word切分 run 的規則很多,有的根據標點符號,有的根據中文分詞,句子中如果存在不同樣式的字詞也會單獨切分出來,因此我們很難預估一句話究竟會被分成幾個片段。
在issue中搜索comment關鍵字發現在一個 merge request 上已經給出了添加批註的解決方案,可以通過 paragraph 對象上的 add_comment 方法給一個段落添加批註
但這還是不符合我的需求,我的目標是精準添加到某個詞或者短語上
打開 這個貢獻者的源碼 進行研究
其實就是在P標簽內插入comment標簽引用,同時添加comment標簽到xx文件
同理我們可以在r標簽內插入comment標簽引用,同時添加comment標簽到xx文件,這樣就能實現給特定詞添加批註的需求了
④ 如何在 Linux 上使用 Python 讀取 word 文件信息
首先下載安裝win32com
from win32com import client as wc
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open('c:/test')
doc.SaveAs('c:/test.text', 2)
doc.Close()
word.Quit()
這種方式產生的text文檔,不能用python用普通的r方式讀取,為了讓python可以用r方式讀取,應當寫成
doc.SaveAs('c:/test', 4)
注意:系統執行完成後,會自動產生文件後綴txt(雖然沒有指明後綴)。
在xp系統下面,應當
open(r'c:\text','r')
wdFormatDocument = 0
wdFormatDocument97 = 0
wdFormatDocumentDefault = 16
wdFormatDOSText = 4
wdFormatDOSTextLineBreaks = 5
wdFormatEncodedText = 7
wdFormatFilteredHTML = 10
wdFormatFlatXML = 19
wdFormatFlatXMLMacroEnabled = 20
wdFormatFlatXMLTemplate = 21
= 22
wdFormatHTML = 8
wdFormatPDF = 17
wdFormatRTF = 6
wdFormatTemplate = 1
wdFormatTemplate97 = 1
wdFormatText = 2
wdFormatTextLineBreaks = 3
wdFormatUnicodeText = 7
wdFormatWebArchive = 9
wdFormatXML = 11
wdFormatXMLDocument = 12
= 13
wdFormatXMLTemplate = 14
= 15
wdFormatXPS = 18
照著字面意思應該能對應到相應的文件格式,如果你是office 2003可能支持不了這么多格式。word文件轉html有兩種格式可選wdFormatHTML、wdFormatFilteredHTML(對應數字 8、10),區別是如果是wdFormatHTML格式的話,word文件裡面的公式等ole對象將會存儲成wmf格式,而選用 wdFormatFilteredHTML的話公式圖片將存儲為gif格式,而且目測可以看出用wdFormatFilteredHTML生成的HTML 明顯比wdFormatHTML要干凈許多。
當然你也可以用任意一種語言通過com來調用office API,比如PHP.
from win32com import client as wc
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(r'c:/test1.doc')
doc.SaveAs('c:/test1.text', 4)
doc.Close()
import re
strings=open(r'c:\test1.text','r').read()
result=re.findall('\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)',strings)
chan=re.sub('\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)','()',strings)
question=open(r'c:\question','a+')
question.write(chan)
question.close()
answer=open(r'c:\answeronly','a+')
for i,a in enumerate(result):
m=re.search('[A-D]',a)
answer.write(str(i+1)+' '+m.group()+'\n')
answer.close()
chan=re.sub(r'\xa3\xa8\s*[A-D]\s*\xa3\xa9','()',strings)
#不要(),容易引起歧義。
⑤ python sys在哪個目錄下
將路徑「永久"添加到sys.path?
sys.path是python的搜索模塊的路徑集,是一個list
復制代碼 代碼如下:
['', 'C:\\WINDOWS\\system32\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\ \lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26 ', 'C:\\Python26\\lib\\site-packages', 'C:\\Python26\\lib\\site-packages\\win32' , 'C:\\Python26\\lib\\site-packages\\win32\\lib', 'C:\\Python26\\lib\\site-packa ges\\Pythonwin']
可以在python 環境下使用sys.path.append(path)添加相關的路徑,但在退出python環境後自己添加的路徑就會自動消失!
在python腳本中修改
復制代碼 代碼如下:
import sys
sys.path.append('c:\\mypythonlib')
為解決這個問題,可以有以下方法:
1. 將自己做的py文件放到 site_packages 目錄下:
下面命令顯示了 site-packages 目錄:
復制代碼 代碼如下:
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib() "
但是這樣做會導致一個問題,即各類模塊都放到此文件夾的話,會導致亂的問題,這一點是顯而易見的。
注意,也不創建子文件夾,再將自己的模塊放到子文件夾解決問題,這會導致使用import 語句時錯誤。
2. 使用pth文件,在 site-packages 文件中創建 .pth文件,將模塊的路徑寫進去,一行一個路徑,以下是一個示例,pth文件也可以使用注釋:
# .pth file for the my project(這行是注釋)
E:\DjangoWord
E:\DjangoWord\mysite
E:\DjangoWord\mysite\polls
這個不失為一個好的方法,但存在管理上的問題,而且不能在不同的python版本中共享。
3. 使用PYTHONPATH環境變數,在這個環境變數中輸入相關的路徑,不同的路徑之間用逗號(英文的!)分開,如果PYTHONPATH 變數還不存在,可以創建它!
路徑會自動加入到sys.path中,而且可以在不同的python版本中共享,應該是一樣較為方便的方法。
關於與python相關的環境變數有那些,請參考:
http://docs.python.org/using/cmdline.html
在頁面上找到PYTHONPATH