++++++++++++++++++++++++++++++++++++++++++++++++
| 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')来自第二行,依此类推。我能够抓住网站'专栏,但不能想到一个模型来刮掉其余部分。主要的是我没有" |"," +"和" NULL"在我的数据中,我只是在这个问题中使用它们来使它有点清楚,它们都被原始数据中的空格所取代。任何帮助是极大的赞赏。对于丑陋的图案我很抱歉,我试着让它看起来很漂亮 修改: Data description pic here
答案 0 :(得分: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
在本例中,列限制显然是随机选择的;它可以很容易地用正确的数据文件找出它们。