2011-10-11 60 views
3

我對Python很新穎,我在儘可能多的研究之前決定在這裏提出一個問題。所以這裏是問題:正則表達式在python中,不知道我在做什麼錯

我不知道我在做什麼錯我的RegEx。我想嘗試re.findall(),所以我想我會寫一個小腳本來查找網頁上的電話號碼。這是我現在的代碼。

import re, urllib 
    inurl = raw_input("Input a URL: ") 
    web = urllib.urlopen(inurl) 
    web.readlines() 

    numbers = re.findall("/\d{3}.\d{3}.\d{4}/g", web) 
    for itm in numbers 
     print itm 

不知道發生了什麼事。我不斷收到錯誤的「預期的字符串或緩衝區」的線

numbers = re.findall(".....", web) 

在此先感謝。

+2

我認爲你需要刪除斜槓和G – Joe

回答

3

/\d{3}.\d{3}.\d{4}/g - /../部分是識別其他語言的正則表達式,比如Ruby,g是一個標誌,也不適用於Python。嘗試刪除它們並使用\d{3}.\d{3}.\d{4}

此外,我想你想在findall中使用輸出/響應而不僅僅是web,這就是爲什麼你看到expected string or buffer。你也應該刪除,只是做web.readlines()

所以,你可能想要做的將是這樣什麼行:

numbers = re.findall("\d{3}.\d{3}.\d{4}", web.read()) 
+0

你只是解決了我的問題,就是這樣。非常感謝。我使用了一個正則表達式生成器。我不知道Ruby在那裏。謝謝。我有個問題。我認爲readlines()會讀取所有行,然後將其放入列表中...或者我是否在doc.python.org上閱讀它?大聲笑 我會重新閱讀文檔,再次感謝你! – inoobdotcom

0
"\d{3}.\d{3}.\d{4}" write raw string r"\d{3}.\d{3}.\d{4}" 
相關問題