Python 3.x Python脚本更改前三个SSN编号

Python 3.x Python脚本更改前三个SSN编号,python-3.x,Python 3.x,正在寻找有关编写python脚本以更改SSN中前三个数字的帮助 来自包含样本SSN编号的txt文件的输入(SSN_ori.txt)。 输出到新的txt文件 例如:将123-44-9898转换为246-44-9898(第一个加+1,第二个加+2,第三个加+3)。2位数字只保留第一位数字(12->2),因为问题有固定模式(3-2-4位)。我们可以有一个直接的解决方案。 将前三个数字转换为int和add 123,然后转换回string,并与测试字符串的其余部分连接 test=“123-44-9898”

正在寻找有关编写python脚本以更改SSN中前三个数字的帮助

来自包含样本SSN编号的txt文件的输入(SSN_ori.txt)。 输出到新的txt文件


例如:将
123-44-9898
转换为
246-44-9898
(第一个加+1,第二个加+2,第三个加+3)。2位数字只保留第一位数字(12->2)

,因为问题有固定模式(3-2-4位)。我们可以有一个直接的解决方案。 将前三个数字转换为int和add 123,然后转换回string,并与测试字符串的其余部分连接

test=“123-44-9898” str(int(test[0:3])+123)+test[3:]


如果有更复杂的情况,可以尝试使用正则表达式

带有正则表达式+替换函数:如果数字大于10,则将其包装为数字%10,所有内容都在一个很好的列表comp中

import re

def do_repl(m):
   return "".join([str((int(x)+(1+i))%10) for i,x in enumerate(m.groups())])


r=re.compile(r"(\d)(\d)(\d)(?=-\d+-\d+)")
test = "123-44-9898"

print(r.sub(do_repl,test))

test = "929-44-9898"

print(r.sub(do_repl,test))
输出:

246-44-9898
042-44-9898

我能想到的最简单的实现是:

t = '123-44-9898'

def evaluate_ssn(ssn):
    first = str(int(ssn[0]) + 1)[-1]
    second = str(int(ssn[1]) + 2)[-1]
    third = str(int(ssn[2]) + 3)[-1]

    return first + second + third + ssn[3::]

evaluate_ssn(t) #246-44-9898

请记住,此代码存在一些潜在问题。例如,当修改后的数字加起来大于9时会发生什么?因为问题中没有具体说明这一点,所以我在回答中没有提到。

你的电话号码是469-44-9898吗?当添加3时,第三个数字9会发生什么情况?@A Magoon,对于每个数字,如果数字超过9,则仅使用第一个数字(12到2,13到3等)。谢谢您的帮助。@Magoon,添加函数/功能是否简单,因此,如果数字的加法大于9,则应为0或第一位数字(例如:12变为2)@scorpionz:请参阅下面我的更新答案(您接受和取消接受该答案,因为它只是将1添加到所有数字,现在已修复,并满足您的要求)。同时,简单的回答并没有解决您的问题(没有具体说明),但清楚地表明它并没有解决您的问题+1@scorpionz-我更新了我的答案,加入了您询问的功能。@A Magoon-非常感谢!