我对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)
提前致谢。
答案 0 :(得分: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())
答案 1 :(得分:0)
"\d{3}.\d{3}.\d{4}" write raw string r"\d{3}.\d{3}.\d{4}"