考虑以下字符串:
str_test = 'This is a sample text NRC234456789 and this is another case AZN.1.Z.3.4.S.6.7.8.9 and this another case BSA 123 456 789 and final case SSR/789456123'
基本上,我需要在字符串中找到字符“NRC”、“AZN”、“BSA”和“SSR”所在的位置。然后,我需要提取接下来的9个数字..忽略任何非数字字符。所以它应该会回来
在某些情况下,数字5被错误地写为S,数字2被错误地写为Z。我仍然需要识别这些情况,并将错误的S和Z分别改为5和2。你知道吗
result = ['NRC234456789', 'AZN123456789' , 'BSA123456789', 'SSR789456123']
我有我正在使用的代码
list_comb = ['NRC', 'AZN', 'BSA', 'SSR']
def findWholeWord(w):
return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).search
它返回找到字符串的位置..但我不确定下一步如何继续。 谢谢
使用这个
regex
来识别模式。也许它能帮上忙:如果非数字字符只有点、逗号和斜杠,则有一种解决方案:
如果非数字字符可以是任何字符,则使用此循环:
输出:
已更新
输出:
这是一种方法
例如:
输出:
根据评论编辑。
下面是一个简单的方法,首先使用这个正则表达式找到想要的文本
使用提供的列表动态生成,然后从中删除任何非字母数字字符。你知道吗
编辑: 对于
2
被错误地写为Z
并且5
被写为S
的错误字符串,您可以在字符串的第二部分替换它们,忽略最初的三个字符。而且,代码更新了,所以它只选择下一个9位数,而不是更多。这是我更新的Python代码打印校正值,其中
S
替换为5
,Z
替换为2
相关问题 更多 >
编程相关推荐