有一段數據包含換行符,像這樣:'點 N400350E1163510\r點 N400317E1163557\r點 N400544E1170300\r點 N395736E1170000\r點 N393524E1170000\r點 N392207E1164138\r點 N400350E1163510\rQNH2400 米(不含)以下'
我想用正則表達式匹配其中某一段數據,然后輸出到CMD驗證正確性。結果命令行把輸出數據中的換行符都解析了,甚至我只能看到結果中最后一個\r后面的數據。所以有沒有辦法讓CMD不解析數據中的換行符?請參照下面Python3代碼來理解我說的問題。一開始我還一直在找自己的正則表達式哪里是寫錯了,可最后打印了result.groups()和len(group(1))之后才發(fā)現這個問題所在(本問題不是討論正則表達式)。
就算不能解決也沒有關系,這個問題算是自己對Windows CMD做個提醒,希望跟我碰到同樣問題的朋友也能看到。
import re
text='點 N400350E1163510\r點 N400317E1163557\r點 N400544E1170300\r點 N395736E1170000\r點 N393524E1170000\r點 N392207E1164138\r點 N400350E1163510\rQNH2400 米(不含)以下'
#數據的起點和終點是相同的
#比如這段數據"點 N400350E1163510"出現了兩次,就是我要的一段數據
result=re.search(r'((.+ N[0-9]{6}E[0-9]+(?=[\r])).+\2).+',text)
if result:
# print(result.groups())
print('g1:%s\tg2:%s' % (result.group(1),result.group(2)))
# print('length of g1:%d\tg2:%d' % (len(result.group(1)),len(result.group(2))))
#結論:上面代碼在CMD表面看起來結果是一樣
#但是打印長度和result.groups()之后就明白怎么回事了
#有時候數據太多沒來得及想到會是CMD的問題,所以為了以后可能會繼續(xù)被CMD干擾還是希望能找到解決辦法
#result.groups()是數組打印出來是不會解析換行符的,但是如果有意去list(str)然后輸出,那說明已經注意到這個問題所在了。
#所以我們更多的時候在平常正常打印str時怎么解決?不用CMD嗎、
我自己也寫了一個輸出到文件有助于調試數據的常用函數:
#程序運行時輸出data到文件。
#當clear=True(默認),也就是文件只保存這一次運行data的數據。
#類似于CMD輸出
def output_file(self,filename,data,op='a',encoding='gb18030',clear=True,new_line=True):
#當op為a追加讀寫文件時,clear標志在程序第一次調用次函數時是否先清空文件
if op == 'a' and clear:
if not hasattr(self,'clear_request'):
self.clear_request={}
#用文件名標記clear狀態(tài)
if filename not in self.clear_request.keys():
#改為wt模式就當是清空了
op='wt'
else:
pass
self.clear_request[filename]=clear
if type('') != type(data):
data=str(data)
if new_line:
data=data+'\r'
with open(filename,op,encoding=encoding) as f:
f.write(data)
另外我還有一個關于控制變量打印輸出次數的的提問,已得到解答,完成了函數精簡的實現。
參見:https://segmentfault.com/q/10...
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數據專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯網學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。