假设我有以下字符串:
thestring = "1) My Favorite Pokemon Charizard *22.00 MP* [Pre-Avatar Mode Cost: 15.75 MP] [Post-Avatar Mode Cost: 6.250 MP]"
其他一些样品可以是:
^{pr2}$(第三种情况的冒号是故意的)
如何最好地提取“预投成本”和“后化身模式成本”的值?我听过正则表达式,但也字符串。查找方法,但不确定什么是实现此目标的最佳方法。请注意,尽管“化身前模式成本”可能是15.75万像素,但也可能取决于种类,也可能是15.752或包含多个小数位。语法是值得赞赏的。在
更新:
我使用的是python2.7。最接近的答案是:
m = re.match('\[Pre-Avatar Mode Cost: (?P<precost>\d(\.\d*){0,1}) MP\] \[Post-Avatar Mode Cost: (?P<postcost>\d(\.\d*){0,1}) MP\]', '1) My Favorite Pokemon Mew *1 MP* [Pre-Avatar Mode Cost: 0.5 MP] [Post-Avatar Mode Cost: 0.5 MP]')
虽然它看起来并没有正确匹配,结果m由于没有匹配而导致“Nonetype”。在
我做了一个小小的改变,使用了以下方法:
m = re.match('(.*)\[.*(?P<precost>\d+(\.\d*){0,1}).*\].*\[.*(?P<postcost>\d+(\.\d*){0,1}).*\]', '1) My Favorite Pokemon Mew *1 MP* [Pre-Avatar Mode Cost: 0.5 MP] [Post-Avatar Mode Cost: 0.5 MP]')
尽管看起来precost和postcost都等于“5”。知道正则表达式有什么问题吗?在
这可能会对你正在搜索的文本中存在的而不是做出太多假设,但肯定会更短,可能更快:
这些假设可能不正确:
我认为正则表达式是最好的选择:
不管小数点后(或小数点后)的位数。在
http://docs.python.org/2/howto/regex.html
以下是所需分组:
访问群的方式:
^{pr2}$如果不关心字符串的内容,并且知道值在2个方括号中,则可以:
相关问题 更多 >
编程相关推荐