python - 在 python 脚本中查找美国电话号码

标签 python regex

以下 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 = something@whatever.xxx
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+))?

最佳答案

如果您对学习 Regex 感兴趣,可以尝试自己编写。这并不像想象的那么难。像 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 - 在 python 脚本中查找美国电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868753/

相关文章:

python - 我可以更改 Python 中默认的 __add__ 方法吗?

python - 正则表达式重叠包含

regex - 我需要一个正则表达式来验证不是 "NONE"

Java:如何删除两个字符串之间第一次出现的匹配子字符串?

python - 直接在Windows中导入错误: no module named PIL when opening the . py文件

python - GTK/ python : How to get key-press-event to edit and navigate a TreeView cell?

Java正则表达式从字符串中删除匹配项

javascript - 将字符串转换为可存储的变量名称和值(作为字符串和对象)

python - 如何在 Python 中读取 cx_Oracle.LOB 数据?

javascript - python selenium 将键发送到只读文本框