我试图从一个字符串中捕获一个数字,该字符串有时包含点分隔符,有时却不包含点分隔符。无论如何,我都需要一个带点分隔符的数字。
例如:
num = re.findall('\d{3}\.(?:\d{2}\.){4}\d{3}|\d{14}', txt)[0]
将捕获两种变体:
304.33.44.52.03.002
30433445203002
如果它捕获了一个不带点的点,我需要使用系统化的点来添加点:
AAA.BB.CC.DD.EE.FFF
如何使用Python添加这些点?
答案 0 :(得分:1)
您可以将数字的每个“组”捕获到一个捕获组中,并在替换字符串中对其进行引用。可以使用\.?
将点设为可选。
string = "30433445203002"
regex = r"(\d{3})\.?(\d{2})\.?(\d{2})\.?(\d{2})\.?(\d{2})\.?(\d{3})"
pattern = "\\1.\\2.\\3.\\4.\\5.\\6"
result = re.sub(regex, pattern, string)
有关更多详细信息,请查看re.sub
输出:
304.33.44.52.03.002
编辑:
如果我误解了您,而您真正想要的是获取前三个数字,第四和第五个数字,第六和第七个数字等,则可以将相同的正则表达式与{{1} }:
search
答案 1 :(得分:1)