因爲現在的工作觸及不到Python,所以又lossing了一段時間,Python的知識不用的話也在逐漸的消退當中。。。。。
爲了更加熟悉和掌握Python
所以我現在開始主要練習敲代碼
爲了以後用Python創造世界。fighting!!!
正文部分開始
第一部分:正則表達式
Q1:finditer中的next用法(P21)(已解決)
在練習這一段代碼時總是出現錯誤,所以在網上面搜索了一下,原來因爲版本的不同適用的語句也不同。所以《Python核心編程 第3版》還是在以Python2.x爲準。作爲一個用Python3.x的人而言,還是慢慢敲代碼,慢慢發現問題,慢慢做改正吧。
在Python3.x中應該是next(a),而不是a.next()
所以在《Python核心編程 第3版》中想要代碼運行正確,應該將:
re.finditer(r'(th\w+) and (th\w+)',s,re.I)).next().groups()
更改爲:
next(re.finditer(r'(th\w+) and (th\w+)',s,re.I)).groups()
Q2:適用sub() 和 subn()搜索與替換(P22)(未解決)
這個代碼敲到Python自帶的IDLE環境中就出現跟書中結果不一樣的現象
我的‘\n’並沒有變成\012,不知道是不是因爲版本的原因。crying,這纔是本書剛開始,我已經能想象之後的場景了,I WANT TO DROP IT。
但是好多人都在推薦這本書,那我還是繼續吧。
Python3中sub用法:re.sub(pattern,repl,string,count=0,flags=0)
Q3:在限定模式上使用split()分隔字符串(P23)(已解決)
這個在jupyter notebook敲擊代碼,一直報錯。。。。。我也是不懂了,爲什麼說我的pattern是空值。
之後我又在IDLE中嘗試了一遍,去掉書中DATA數據中最後一個逗號(我覺得書中這個逗號是錯誤的),我運行了一下,發現是可行的,沒有報錯,但是卻不是書中正確的結果。
實在是找不出原因了,然後我在網上搜索了一下,看到了別人正確的代碼,然後複製在我的代碼中運行,結果是正確的,但是我並沒有找出別人的代碼跟我的代碼的不同點,圖片1是別人的代碼,圖片2是我的代碼。我的運行結果還是不對。。。
然後我又仔細的核對了一遍,居然還是漏了一個空格。這次終於對了。
原來書中是有空格的,我還以爲數據印刷板式原因。還是對代碼不太敏感呀。
Q4:關於^\s(P27)
運行這段代碼的時候,我出來的結果只有一個,我以爲又是沒有注意那個位置而導致代碼出錯。但是仔細看了一些書中的這個代碼,這個不是規定以^\s爲起始匹配的嗎?所以運行的結果應該只有一個,而書中出現了3個數據,這個應該是去掉^這個纔可能出現的結果。