+-

以下 python脚本允许我使用正则表达式从给定文件中删除电子邮件地址.
我怎么能添加这个以便我也可以获得电话号码?比如说,如果它是7位数或10位数(带区号),还算括号括号?
我目前的脚本可以在下面找到:
# filename variables
filename = 'file.txt'
newfilename = 'result.txt'
# read the file
if os.path.exists(filename):
data = open(filename,'r')
bulkemails = data.read()
else:
print "File not found."
raise SystemExit
# regex = [email protected]
r = re.compile(r'(\b[\w.]+@+[\w.]+.+[\w.]\b)')
results = r.findall(bulkemails)
emails = ""
for x in results:
emails += str(x)+"\n"
# function to write file
def writefile():
f = open(newfilename, 'w')
f.write(emails)
f.close()
print "File written."
正则表达式的电话号码:
(\d{3}[-\.\s]\d{3}[-\.\s]\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]\d{4}|\d{3}[-\.\s]\d{4})
电话号码的另一个正则表达式:
(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?
最佳答案
如果你有兴趣学习正则表达式,你可以自己写一下.它并不像它的那么难.像 RegexPal这样的网站允许您输入一些测试数据,然后针对该数据编写和测试正则表达式.使用RegexPal,尝试以您希望找到的各种格式添加一些电话号码(使用括号,区号等),抓住 Regex cheatsheet并查看您可以获得多远.如果不出意外,它将有助于阅读其他人的表达.
编辑:
以下是Regex的修改版本,它还应匹配缺少连字符,空格或点的7位和10位电话号码.我在字符类([] s)之后添加了问号,这使得其中的任何内容都是可选的.我在RegexPal中进行了测试,但由于我还在学习Regex,我不确定它是否完美.试试看.
(\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})
它与RegexPal中的以下值匹配:
000-000-0000
000 000 0000
000.000.0000
(000)000-0000
(000)000 0000
(000)000.0000
(000) 000-0000
(000) 000 0000
(000) 000.0000
000-0000
000 0000
000.0000
0000000
0000000000
(000)0000000
点击查看更多相关文章
转载注明原文:在python脚本中查找电话号码 - 乐贴网