3

我对 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)

提前致谢。

4

2 回答 2

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())
于 2011-10-11T03:06:22.380 回答
0
"\d{3}.\d{3}.\d{4}" write raw string r"\d{3}.\d{3}.\d{4}"
于 2011-10-11T05:50:33.157 回答