与Python中的string.Template相反
发布时间:2020-12-20 11:19:07 所属栏目:Python 来源:网络整理
导读:我知道模板可以像下面这样工作: x = Template(" Coordinates; $o1;$o2;$o3;n")y = x.substitute(o1 = 23,o2 = 108,o3 = 655) 你会给我: " Coordinates; 23;108;655;n" 我想知道是否有办法逆转这个?像我打包的东西解压缩: x = Template(" Coordinates;
我知道模板可以像下面这样工作:
x = Template(" Coordinates; $o1;$o2;$o3;n") y = x.substitute(o1 = 23,o2 = 108,o3 = 655) 你会给我: " Coordinates; 23;108;655;n" 我想知道是否有办法逆转这个?像我打包的东西解压缩: x = Template(" Coordinates; $o1;$o2;$o3;n") y = " Coordinates; 23;108;655;n" z = x.unpack(y) 并让z返回类似的东西: ["23","108","655"] 有任何想法吗?我应该使用正则表达式吗? 编辑:如果使用正则表达式,我将如何编程以下3行返回第一个数字和6个尾随数字? a = " 123; Coord ; 19.1335; 3.5010; 1; 3; 8; 4" b = " 17; Coord ; 15.2940; 13.5010; 3; 1; 8; 8" c = " 5; Coord ; 19.1345; 0.6200; 1; 1; 7; 8" 我尝试了这些,似乎无法让它工作: >>> re.match('(d+); Coord ;(d+);(d+);(d+);(d+);(d+);(d+)',a).groups() 解决方案:使用正则表达式tutorial(感谢ironchefpython): >>> import re >>> text = """ 123; Coord ; 19.1335; 3.5010; 1; 3; 8; 4 17; Coord ; 15.2940; 13.5010; 3; 1; 8; 8 5; Coord ; 19.1345; 0.6200; 1; 1; 7; 8 """ >>> coord = re.compile("D*(d+)D+([d.]+)D+([d.]+)D+(d+)D+(d+)D+(d+)D+(d+)") >>> coord.findall(text) [('123','19.1335','3.5010','1','3','8','4'),('17','15.2940','13.5010','8'),('5','19.1345','0.6200','7','8')] 解决方法
关于你的编辑,如果你想使用正则表达式,我强烈建议你看看
tutorial;没有一些指导,正则表达式看起来像不可压缩的垃圾,即使其他人可以为你编写正则表达式,你至少应该明白他们在做什么.
话虽如此, >>> re.match(r"D*(d+)D+([d.]+)D+([d.]+)D+(d+)D+(d+)D+(d+)D+(d+)"," 123; Coord ; 19.1335; 3.5010; 1; 3; 8; 4").groups() ('123','4') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |