我正在尝试使用正则表达式将线条分成3个部分,典型的线条适合这种模式:-30.345 150.930 112.356
我正在使用lat = float(re.match('[^\s]+', line).group(0))
提取第一部分数据,但无法正确定位第二和第三个数字。
我尝试过/正在尝试long = float(re.match('.*?\s(\S+)\s.*?', line).group(0))
,但这会将整个字符串返回到第二个空格。如何在这些字符串中仅定位第二个数字和第三个数字?
答案 0 :(得分:2)
如果您无法split
,那么您可以在开头将数字与可选的-
或+
匹配:
>>> s = '-30.345 foo 150.930 abc 112.356 another .123'
>>> re.findall(r'([+-]?\d*\.?\d+)', s)
['-30.345', '150.930', '112.356', '.123']