0
我试图用Python的re.sub和格式化功能来搜索和替换部分字符串。 我要像所有文字“ESO \ d + - \ d +”的格式被替换 'ESO \ d {3} - \ d {3}' 使用前导零正则表达式下的字符串替换不像预期的那样工作
我认为这会工作:
。re.sub(r"ESO (\d+)-(\d+)" ,"ESO {:0>3}-{:0>3}".format(r"\1",r"\2"), line)
,但我得到了奇怪的结果:
'ESO 409-22' 变成了 'ESO 0409-022'
'ESO 539-4' 变成 'ESO 0539-04'
实际上,我看不到错误我用两个操作我得到正确的结果:
>>> ricerca = re.search(r"ESO (\d+)-(\d+)","ESO 409-22")
>>> print("ESO {:0>3}-{:0>3}".format(ricerca.group(1),ricerca.group(2)))
ESO 409-022
为什么您需要使用're.sub'?这是一项任务/作业吗? –
无论如何,尝试传递一个函数作为替换而不是字符串,并在那里进行格式化。 –
谢谢,我做了'ricerca = re.search(r“ESO(\ d +) - (\ d +)”,“ESO 409-22”)?然后're.sub(“ESO(”+ ricerca.group(1)+“) - (”+ ricerca.group(2)+“)”,“ESO {:0> 3} - {:0> 3 }“。格式(ricerca.group(1),ricerca.group(2)),”ESO 409-22“)'now'works –