regex 电话号码字段包含美国电话号码,并需要修改为国际格式,电话号码前加“+1-

4urapxun  于 2023-06-25  发布在  其他
关注(0)|答案(9)|浏览(244)

我在用

import re
def transform_record(record):
  new_record = re.sub(r'(,[^a-zA-z])', r'\1+1-',record)
  return new_record

print(transform_record("Sabrina Green,802-867-5309,System Administrator")) 
#Excpected Output:::" Sabrina Green,+1-802-867-5309,System Administrator"

但是我得到的是输出::

Sabrina Green,8+1-02-867-5309,S+-ystem Administrator
ie3xauqp

ie3xauqp1#

import re

def transform_record(record):

new_record = re.sub(r',(?=\d)', r',+1-',record)

return new_record

print(transform_record("Sabrina Green,802-867-5309,System Administrator")) 
# Sabrina Green,+1-802-867-5309,System Administrator

print(transform_record("Eli Jones,684-3481127,IT specialist")) 
# Eli Jones,+1-684-3481127,IT specialist

print(transform_record("Melody Daniels,846-687-7436,Programmer")) 
# Melody Daniels,+1-846-687-7436,Programmer

print(transform_record("Charlie Rivera,698-746-3357,Web Developer")) 
# Charlie Rivera,+1-698-746-3357,Web Developer
hjzp0vay

hjzp0vay2#

下面一个正在工作。

re.sub(r",([\d-]+)",r",+1-\1" ,record)
l7mqbcuq

l7mqbcuq3#

有些人在遇到问题时会想“我知道,我会用正则表达式。”

def transform_record(record, number_field=1):
    fields = record.split(",")  # See note.
    if not fields[number_field].startswith("+1-"):
        fields[number_field] = "+1-" + fields[number_field]
    return ",".join(fields)

我在上面的实现中有一个注解。您可能正在使用CSV数据。如果是这样的话,你应该使用一个合适的CSV解析器,而不是仅仅用逗号来分割。如果一个字段包含转义逗号,那么在逗号上拆分就会出错。

brjng4g3

brjng4g34#

如果您的数据没有很好地排序,并且您希望在任何,之前添加+1-,然后再加上一个数字,则可以使用yo

re.sub(r',(?=\d)', r',+1-', record)

参见regex demo
,(?=\d)模式首先匹配一个逗号,然后(?=\d)正向预测确保后面有一个数字,而不会消耗这个数字(它仍然保留在替换结果中)。
参见Python demo online

iih3973s

iih3973s5#

首先,通过r",(?=[0-9])"从记录文本中检测模式。这意味着如果在,逗号之后有一些数字,则在逗号之后添加+1-,然后添加前一个电话号码。
例如:345-345-34567转换为+1-345-345-34567

import re
def transform_record(record):
    new_record = re.sub(r",(?=[0-9])",",+1-",record)
    return new_record

print(transform_record("Sabrina Green,802-867-5309,System Administrator"))
# Sabrina Green,+1-802-867-5309,System Administrator

print(transform_record("Eli Jones,684-3481127,IT specialist")) 
# Eli Jones,+1-684-3481127,IT specialist

print(transform_record("Melody Daniels,846-687-7436,Programmer")) 
# Melody Daniels,+1-846-687-7436,Programmer

print(transform_record("Charlie Rivera,698-746-3357,Web Developer")) 
# Charlie Rivera,+1-698-746-3357,Web Developer
mlnl4t2r

mlnl4t2r6#

import re
def transform_record(record):
    new_record = re.sub(r"([\d-]+)",r"+1-\1",record)
    return new_record
vtwuwzda

vtwuwzda7#

new_record = re.sub(r",([\d])",r",+1-",record)

这对我很有效

n53p2ov0

n53p2ov08#

在这段代码中,我们想要搜索一个或多个数字,所以你需要在类中使用\d,并使用“+”符号,对于re.sub,你需要用“+1”添加前一个电话号码

new_record = re.sub(r',([\d]+)',r',+1\1', record)
r7xajy2e

r7xajy2e9#

我们可以使用括号在正则表达式中创建捕获组。我们的第一个参数r”([0-9-]+)",保存将匹配变量记录中的一个或多个数字和-破折号的模式。第二个参数**"+1-“r”\1”将替换匹配字符串"\1”(反斜杠1表示第一个也是唯一匹配的捕获组,这是正则表达式中Backreferences的做法),然后我们在捕获字符串或电话号码的前面添加国际格式字符串"+1-"**。

import re

def transform_record(record):
  new_record = re.sub(r"([0-9-]+)", "+1-"r"\1", record)
  return new_record

print(transform_record("Sabrina Green,802-867-5309,System Administrator")) 
# Sabrina Green,+1-802-867-5309,System Administrator

print(transform_record("Eli Jones,684-3481127,IT specialist")) 
# Eli Jones,+1-684-3481127,IT specialist

print(transform_record("Melody Daniels,846-687-7436,Programmer")) 
# Melody Daniels,+1-846-687-7436,Programmer

print(transform_record("Charlie Rivera,698-746-3357,Web Developer")) 
# Charlie Rivera,+1-698-746-3357,Web Developer

相关问题