【问题标题】:Normalize Phone Numbers Using Python使用 Python 规范化电话号码
【发布时间】:2018-12-01 08:51:59
【问题描述】:

我对 python 非常陌生。我经常得到具有各种格式的电话号码的文本文件。我正在尝试创建一个 python 脚本来获取这个文本文件并将它们规范化为我可以使用的格式。

我正在尝试删除所有符号和空格,只留下数字。以及在开头添加 +1 并在末尾添加逗号 (,)。

import re

with open("test_numbers.txt") as file:
    dirty = file.read()
    clean = re.sub(r'[^0-9]', '', dirty)

print clean

我正在尝试使用正则表达式,但它将所有内容放在一行中。也许我对这一切都错了。我还没有找到将+1 添加到数字开头或在末尾添加逗号的方法。不胜感激。

【问题讨论】:

  • 您的正则表达式可能正在删除 \n (和 \r) - 但将正则表达式应用于文件可能是错误的方法;最好一次读一行。另外,请注意,您可能会遇到已经采用国际格式的电话号码 - 您可能需要小心。
  • 你想循环你的 dirty 变量。在循环内部,您需要将正则表达式应用于文本文件中的每一行。

标签: python


【解决方案1】:

这可能会对您有所帮助:

import re

with open('test_numbers.txt') as f:
    dirty = f.readlines()

clean = []
for l in dirty:
    clean.apped('+1{},\n'.format(re.sub(r'[^0-9]', '', l)))

clean 将是一个以+1 开头和, 结尾的行列表。然后,您可以将其保存到文本文件中:

with open('formatted_numbers.txt', 'w') as f:
    f.writelines(clean)

您还可以使用列表理解来使用单行:

clean = ['+1{},\n'.format(re.sub(r'[^0-9]', '', l)) for l in dirty]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2011-08-05
    • 1970-01-01
    • 2011-05-28
    • 2019-05-10
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多