我有一个字符串:string = "2017.5 is halfway through the year"
。有没有办法从字符串中提取这个"2017.5"
?我尝试使用string.isdigit()
,但这只适用于非浮动。
答案 0 :(得分:2)
如果你的浮点数总是以十进制表示法表示,比如
>>> import re
>>> re.findall("\d+\.\d+", "2017.5 is halfway through the year")
['2017.5']
可能就够了。
对于parse int和float(点分隔符)值:
re.findall( r'\d+\.*\d*', '2017.5 is halfway through the year' )
结果:
['2017.5']
答案 1 :(得分:0)
这是使用re.match
的示例:
>>> import re
>>> ok = '2017.5 and some stuff'
>>> hmm = re.match(r'[0-9\.]+', ok)
>>> hmm.group()
'2017.5'
r'[0-9\.]+'
是一个正则表达式,用于提取与数字和句点匹配的组
答案 2 :(得分:0)
我没有足够的声誉来发表评论,但我不得不说jmunsch的正则表达式有时会导致错误,[0-9。] +可能会提取类似.2.3.1和1.0的内容。 2.6,实际上不是您希望提取的表格中的浮动数字。
答案 3 :(得分:0)
只是一个没有正则表达式的脏实现,每个句子有一个数字/浮点数:
s = "new 2017.5 is halfway through the year1"
def process(all,new):
def is_float_try(str):
try:
float(str)
return True
except ValueError:
return False
return new if new.isdigit() or is_float_try(new) else all
print reduce(process,s.split(),'')
# 2017.5