[英]Regex to split line data into year / temperature readings
我正在編寫一個Python腳本來將我擁有的一些數據文件解析為geojson數據。
現在,我有很多行,每行以一年開始,然后有12個溫度讀數(每個月一個),例如:
1983 5.2 -0.4 5.7 9.8 13.7 18.1 22.1 19.8 15.1 10.2 4.8 1.1
1984 1.9 0.5 2.8 8.9 13.7 15.0 16.9 19.2 13.5 11.3 4.6 0.7
1985 -5.0 -2.8 4.0 8.8 15.6 15.2 19.0 18.4 14.3 9.9 2.0 4.4
1986 0.4 -6.4 3.8 7.4 15.9 17.4 19.4 18.2 12.3 10.3 7.1 2.5
等等,我正在嘗試理想地編寫一個正則表達式,以便使年份進入第一個捕獲組,然后將所有溫度歸入下一個捕獲組,或者將它們歸為單獨的組。 在第一種情況下,我將基於空間進行拆分,然后分別對其進行解析。 在第二篇文章中,我將逐個解析每個捕獲組。
我現在已經嘗試過了,但它不起作用(按比例縮小示例進行演示):
import re
reYear = re.compile("([0-9][0-9][0-9][0-9])([\s]*[\-]*[0-9]+[\s]*)*")
line = "1983 5.2 -0.4 5.7 9.8 13.7 18.1 22.1 19.8 15.1 10.2 4.8 1.1"
data = reYear.search(line)
print("GROUP 0: %s" % data.group(0))
print("GROUP 1: %s" % data.group(1))
這是我得到的輸出:
GROUP 0: 1983 5
GROUP 1: 1983
我認為這可能可行,因為第一個()組說捕獲4位數字,第二個組說捕獲負號(或不負號)的一些實例,一些數字,然后捕獲空白。 但是我真的不知道我在做什么。 感謝任何幫助。
謝謝!
我建議使用。*來匹配行的其余部分。 另外,\\ d {4}是匹配四位數字的最簡單方法:
import re
# Regex: (four digits) whitespace (the rest of the line)
reYear = re.compile("(\d{4})\s+(.*)")
line = "1983 5.2 -0.4 5.7 9.8 13.7 18.1 22.1 19.8 15.1 10.2 4.8 1.1"
data = reYear.search(line)
# Group 0 is everything
print("GROUP 0: %s" % data.group(0))
print("GROUP 1: %s" % data.group(1))
print("GROUP 2: %s" % data.group(2))
輸出:
GROUP 0: 1983 5.2 -0.4 5.7 9.8 13.7 18.1 22.1 19.8 15.1 10.2 4.8 1.1
GROUP 1: 1983
GROUP 2: 5.2 -0.4 5.7 9.8 13.7 18.1 22.1 19.8 15.1 10.2 4.8 1.1
說了這么多,您可以將整個行分隔在空白處,並將第一個元素作為年份,而根本不使用正則表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.