与Python中的string.Template相反

与Python中的string.Template相反,第1张

概述我知道模板可以像下面这样工作: x = Template(" Coordinates; $o1;$o2;$o3;\n")y = x.substitute(o1 = 23, o2 = 108, o3 = 655) 你会给我: " Coordinates; 23;108;655;\n" 我想知道是否有办法逆转这个?像我打包的东西解压缩: x = Template(" Coord 我知道模板可以像下面这样工作:

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')
总结

以上是内存溢出为你收集整理的与Python中的string.Template相反全部内容,希望文章能够帮你解决与Python中的string.Template相反所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存