有人可以帮我解决以下情况吗?
NFL 赛季即将来临,我正在编写一个 Python 脚本,用于从网站上抓取利差进行分析。
场景一:点差的形式为-3+3
场景二:点差的形式为-3.5+3.5
import re
s1 = '-3+3'
s2 = '-3.5+3.5'
search1 = re.search(r'(.\d)(.*)',s1)
search2 = re.search(r'(.\d)(.*)',s2)
print search1.group(1),','search1.group(2)
print search2.group(1),',',search2.group(2)
>-3 , +3
>-3 , .5+3.5
正如您所看到的,第二个场景的输出会截掉小数点后的所有内容并将其放在下一个数字的前面。谁能帮我找到适用于这两种情况的解决方案?
谢谢!
最佳答案
您可以使用 re.findall()
和 '(.\d(?:\.\d+)?)'
作为您的正则表达式,它使用可选的匹配小数部分的组:
>>> re.findall(r'(.\d+(?:\.\d+)?)', s1)
['-3', '+3']
>>> re.findall(r'(.\d+(?:\.\d+)?)', s2)
['-3.5', '+3.5']
关于python - python中解析数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148905/