我在用
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
9条答案
按热度按时间ie3xauqp1#
hjzp0vay2#
下面一个正在工作。
l7mqbcuq3#
有些人在遇到问题时会想“我知道,我会用正则表达式。”
我在上面的实现中有一个注解。您可能正在使用CSV数据。如果是这样的话,你应该使用一个合适的CSV解析器,而不是仅仅用逗号来分割。如果一个字段包含转义逗号,那么在逗号上拆分就会出错。
brjng4g34#
如果您的数据没有很好地排序,并且您希望在任何
,
之前添加+1-
,然后再加上一个数字,则可以使用yo参见regex demo。
,(?=\d)
模式首先匹配一个逗号,然后(?=\d)
正向预测确保后面有一个数字,而不会消耗这个数字(它仍然保留在替换结果中)。参见Python demo online。
iih3973s5#
首先,通过
r",(?=[0-9])"
从记录文本中检测模式。这意味着如果在,
逗号之后有一些数字,则在逗号之后添加+1-
,然后添加前一个电话号码。例如:
345-345-34567
转换为+1-345-345-34567
mlnl4t2r6#
vtwuwzda7#
这对我很有效
n53p2ov08#
在这段代码中,我们想要搜索一个或多个数字,所以你需要在类中使用\d,并使用“+”符号,对于re.sub,你需要用“+1”添加前一个电话号码
r7xajy2e9#
我们可以使用括号在正则表达式中创建捕获组。我们的第一个参数r”([0-9-]+)",保存将匹配变量记录中的一个或多个数字和-破折号的模式。第二个参数**"+1-“r”\1”将替换匹配字符串"\1”(反斜杠1表示第一个也是唯一匹配的捕获组,这是正则表达式中Backreferences的做法),然后我们在捕获字符串或电话号码的前面添加国际格式字符串"+1-"**。