当前位置: 首页 > 面试题库 >

在python脚本中查找电话号码

佴飞驰
2023-03-14
问题内容

以下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+))?

问题答案:

如果您对学习正则表达式感兴趣,可以尝试自己编写。它并没有想象中那么难。诸如RegexPal之类的网站允许您输入一些测试数据,然后针对该数据编写和测试正则表达式。使用RegexPal,尝试添加您希望找到的各种格式的电话号码(带有括号,区号等),获取Regex备忘单,然后查看可获得的距离。如果没有别的,它将有助于阅读别人的表情。

编辑:这是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


 类似资料:
  • 问题内容: 一旦用户开始将电话号码键入此格式类型,并且我可以正常工作,我就在格式化文本文件中的文本,但是一旦我从服务器上获得了电话号码,我就这样得到了,所以请您告诉我如何编辑它我从服务器获得相同格式的文件吗? 输入开始后的代码: 问题答案: 用String中的字符进行操作不是很简单。您需要遵循以下条件: 斯威夫特2.1 雨燕2.0 代码将打印

  • 我在google电子表格中有一个调用日志数据库,它是由IFTTT小程序生成的。然后,该数据库通过带有url的GAS发送到私有web API。fetch命令(如果您感兴趣,可以在这里找到一篇带有代码的帖子)。为了相关性。使用onChange触发器实现自动化,我将重新格式化数据,然后在每次IFTTT插入新行时将最后一行提取到API。 它正在工作,但我的电话号码格式有问题。我从IFTTT获得的格式不一致

  • 我目前使用phonenumbers包作为我的Django的UserCreationForm的电话号码字段的验证方法。在我当前的代码中,我使用get方法从其字段中检索电话号码,然后进行验证。如果输入的数字不存在,将弹出一个表单错误,并声明该数字不是一个国家的格式(在本例中,我使用的是新加坡)。请告诉我应该对我当前的代码做什么修改。 我希望输出验证phone字段中输入的电话号码,没有国家代码,只有8位

  • 如果您在Nuxt页面中包含电话号码,请确保将它们直接包装到链接中: <!-- Example phone number: +7 (982) 536-50-77 --> <template> <a href="tel: +7 (982) 536-50-77">+7 (982) 536-50-77</a> </template> 否则,某些移动Safari版本会自动将这些数字转换为链接。 听起

  • 问题内容: 我需要确定调用我的Python脚本的外壳是否处于交互模式。如果它处于交互模式,则程序应将输出通过管道传递到less(1)以便于阅读。如果没有,它应该只将其输出打印到stdout,以便将其通过管道传输到打印机,文件或其他寻呼机。 在shell脚本中,我将检查是否定义了提示变量$ PS1,或者在$-变量中存储的标志中寻找-i选项。 从Python内部测试交互性的首选方法是什么? 问题答案: