2011-03-29 37 views

回答

4

B是重新匹配對象你真正想要的是表格單元格的旁邊說的一個值。。爲此,您可以使用HTML/XML解析器,如Beautiful Soup

此外,由於這是家庭作業這一事實表明你是編程新手:有意義的變量名稱值得花時間輸出它們。

+2

+1對於「有意義的變量名稱值得花時間輸出它們」。 – jathanism 2011-03-29 17:32:17

+0

先生nmichaels我們可以做那個腳本沒有湯模塊? – 2011-03-29 17:36:37

+0

@ jack-X:它當然可以做到,但這超出了這個答案的範圍。只需要警告,用正則表達式解析XML會給你帶來很多「不要這樣做」的評論。 – nmichaels 2011-03-29 17:46:12

0

您可能想要重新查看您要搜索的內容,因爲它甚至不在返回的數據中。

>>> import urllib 
>>> J="http://whois.arin.net/rest/nets;q=74.125.232.147?showDetails=true&showARIN=false" 
>>> resp = urllib.urlopen(J) 
>>> resp.code 
200 
>>> data = resp.read() 
>>> 'NetRange' in data 
>>> False 

另外,可以查找的文檔超過了Python's re module,特別是部分上search() vs. match()。在這種情況下,您需要search(),而不是match()

+0

謝謝你們,但我想打印'NetRange',所以我不知道怎麼做!,謝謝! – 2011-03-29 17:59:31

0

不幸的是,這個正則表達式可悲地不足。您應該將該頁面的源文件複製並粘貼到文本編輯器中並對其進行檢查。首先,認識到它是由XSLT的XML樣式。你是否在課堂上講過XML?如果是這樣,你應該知道你需要使用一個合適的XML解析器,比如elementtree來使這個更容易,更好,更可靠。

如果由於某些原因,您需要修改您的方法,如果您因爲某種原因需要修改您的方法,請將必須爲作爲正則表達式(真的,除非它是類的要求)。也許把它放在re-try來幫助開發你的正則表達式。至少你會需要括號來捕獲值。下面是一個例子了一條不同的網站,http://api.hostip.info/?ip=4.8.42.19

countryMatches = re.findall(r"""<countryName>(.+)</countryName>""", AB) 
if countryMatches: 
    country = countyMatches.group(0)[0] #first match, first (only) group) 

另外,請用更好的變量名。一封信是非常可怕的風格。你的代碼很難閱讀,只會變得更難,因爲它做更多的工作。