【问题标题】:Regex to model the below mentioned type of expressions正则表达式对下面提到的表达式类型进行建模
【发布时间】:2015-09-27 03:37:44
【问题描述】:
++++++++++++++++++++++++++++++++++++++++++++++++   
| 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  |  

由于我没有看到模式,所以我一直在研究如何对正则表达式建模以从站点、早上、下午、晚上和晚上提取值。例如,我的正则表达式应该能够从第一行和 ('Long 161 - Lat 122', '100 ','','','5') 从第二行开始,依此类推。我能够抓取“站点”列,但想不出一个模型来抓取其余部分。主要是我的数据中没有“|”,“+”和“NULL”,我只是在这个问题中使用它们来说明一点,它们都被原始数据中的空格替换。任何帮助是极大的赞赏。对不起,丑陋的图案,我试着让它看起来很漂亮。
编辑: Data description pic here

【问题讨论】:

  • 数据实际上是什么样的,是在文件中吗?
  • 它没有'|'和'+',只是空格。是的,它在一个文件中。
  • 只是一片空白。
  • 你能添加一个实际的行吗,因为如果我理解正确的话,这似乎很容易解决
  • 如果您的输入确实是简单的文本,那么您应该edit您的问题并更新您的输入当前显示的方式。 Avinash Raj 只是在它周围放了一个代码块; +, |并且 NULL 仍然存在,造成混乱。虽然您声称您的输入不是固定格式,但您的图片清楚地向我们展示了它。编辑您的问题时,复制粘贴您输入的一部分,并对其应用代码块(两个大括号,“{}”)。

标签: python regex python-2.7


【解决方案1】:

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

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

例如,简单的版本:

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

在这个例子中,列限制显然是随机选择的;使用正确的数据文件很容易找出它们。

【讨论】:

  • 数据不是固定位置格式,就是这里的问题。我很抱歉以这种方式展示它,我的错。我的意图是尽可能清楚地显示它。再次抱歉。
  • 你的照片说的是;我不知道您是如何创建该图片的,否则您已经损坏了输入文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多