为下面提到的表达式类型建模


++++++++++++++++++++++++++++++++++++++++++++++++   
| 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 144 - Lat 18', '100','150','10','5')和从第二行抓取('Long 161 - Lat 122', '100', ", ",'5'),以此类推。我能够刮掉"SITE"栏,但想不出一个模型来刮掉其他栏。主要是我的数据中没有"|","+"one_answers"NULL",我只是在这个问题中使用它们来让它更清楚,它们都被替换为原始数据中的空格。非常感谢任何帮助。对不起,图案很难看,我尽量让它看起来漂亮。编辑:数据描述pic在这里

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

您需要完整地读取每行,然后根据列的位置拆分该行。不使用正则表达式或.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

在这个例子中,列限制显然是随机选择的;用正确的数据文件就很容易弄清楚。

相关内容

最新更新