我需要在模式中找到包含有效的模式.我无法想象实现这种模式.我可以用以下两种格式获得价值,休息应该丢弃
s = "1:5.9,1.5:7,2:10,4:18,8:40"
Run Code Online (Sandbox Code Playgroud)
I need to check that if string s have <value_1>:<value_2> format.在这里我尝试了匹配和搜索,发现它需要完成编译我想检查该字符串包含这种格式
<value_1>:<value_2>,<value_3>:<value_4>.... goes on"
#!/usr/bin/env py
import re
s = "1:5.9,1.5:7,2:10,4:18,8:40"
data = re.search(r'\d+:\d+',s)
if data:
print data.group()
Run Code Online (Sandbox Code Playgroud)
如果我理解正确你需要这样的东西.如果请求的模式不在字符串中,您将收到空列表.
代码:
#!/usr/bin/env py
import re
s = "1:5.9,1.5:7,2:10,4:18,8:40"
data = re.findall(r'([0-9.]+):([0-9.]+)', s)
if data:
print data
Run Code Online (Sandbox Code Playgroud)
输出:
[('1', '5.9'), ('1.5', '7'), ('2', '10'), ('4', '18'), ('8', '40')]
编辑1: 代码处理错误,只接受正确的值.
#!/usr/bin/env py
import re
s = "1:5.9,1.5:7,2:10,4:18,8:40"
raw_data = re.findall(r'(([0-9]+(.)?(?(3)[0-9]+)):([0-9]+(.)?(?(5)[0-9]+)))+', s)
_temp = ','.join([first[0] for first in raw_data])
data = [(p[1], p[3]) for p in raw_data]
if _temp==s:
print 'Data is correct'
else:
print 'Data is wrong'
Run Code Online (Sandbox Code Playgroud)