Python Regex对下面提到的表达式类型进行建模

Python Regex对下面提到的表达式类型进行建模,python,regex,python-2.7,Python,Regex,Python 2.7,因为我没有看到模式,所以我一直在研究如何对正则表达式建模以从站点、上午、下午、晚上和晚上提取值。例如,我的正则表达式应该能够从第一行刮去'Long 144-Lat 18','100','150','10','5',从第二行刮去'Long 161-Lat 122','100','5',依此类推。我能够刮去“站点”专栏,但想不出一个模型来刮去其余的。主要的是,我的数据中没有|,+和NULL,我只是在这个问题中使用它们来说明一点,它们在原始数据中都被空格替换了。非常感谢您的帮助。对不起,图案很难看,我

因为我没有看到模式,所以我一直在研究如何对正则表达式建模以从站点、上午、下午、晚上和晚上提取值。例如,我的正则表达式应该能够从第一行刮去'Long 144-Lat 18','100','150','10','5',从第二行刮去'Long 161-Lat 122','100','5',依此类推。我能够刮去“站点”专栏,但想不出一个模型来刮去其余的。主要的是,我的数据中没有|,+和NULL,我只是在这个问题中使用它们来说明一点,它们在原始数据中都被空格替换了。非常感谢您的帮助。对不起,图案很难看,我试着让它看起来很漂亮。
编辑:

数据只是固定位置格式;那很容易处理

您需要完全阅读每一行,然后根据列位置拆分该行。不是通过正则表达式或使用.split

例如,过于简单的版本:

++++++++++++++++++++++++++++++++++++++++++++++++   
| SITE | Morning | Afternoon | Evening | Night |  
++++++++++++++++++++++++++++++++++++++++++++++++  
| Long 144 - Lat 18  | 100 | 150 | 10  | 5 |  
++++++++++++++++++++++++++++++++++++++++++++++++   
| Long 161 - Lat 122 |   100   |   |   | 5 |  
++++++++++++++++++++++++++++++++++++++++++++++++  
| Long 100 - Lat 134 |   100   |   | 5 |   |  
++++++++++++++++++++++++++++++++++++++++++++++++  
| Long 190 - Lat 14  |    |    | 158 |  5  |  

在本例中,列限值显然是随机选择的;使用正确的数据文件可以很容易地找出它们。

数据实际上是什么样子的,是在文件中吗?它没有“|”和“+”,只有空格。是的,它在一个文件中。它只是一个空白。你能添加一个实际的行吗?因为这似乎很难解决。如果我理解正确,如果你的输入确实是简单的文本,那么你应该回答你的问题并更新你的输入当前的显示方式。Avinash Raj只是在它周围放了一个代码块;+、|和null仍然存在,造成混乱。虽然你声称你的输入不是固定格式,但你的图片清楚地向我们展示了它。编辑问题时,复制粘贴输入的一部分,并将代码块应用到两个大括号{}。数据不是固定位置格式,这就是问题所在。我很抱歉以这种方式展示它,我的错。我的目的是尽可能清楚地展示它。再次抱歉。你的照片上说是;我不知道你是如何创建这张图片的,但是你已经弄坏了你的输入文件。
with open("data.txt") as infile:
    for line in infile:
         longitude = float(line[5:10])
         latitude = float(line[15:20])
         morning = line[25:30]
         # See if there's data, otherwise assign a default
         morning = float(morning) if morning.strip() else 0
         # Ditto for afternoon, evening, night