++++++++++++++++++++++++++++++++++++++++++++++++
| 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
在这个例子中,列限制显然是随机选择的;用正确的数据文件就很容易弄清楚。