我从使用python的网页中获取文本文件,如下所示。我抓住的数据包括我不需要的额外内容。我只需要粗体部分。我还需要将每个粗体部分彼此分开。你能帮我这么做吗。在一张图片中,红色部分也是我试图从数据中提取的部分。
[
'\n249\nSRUS54 KFWD 051849\nRR5FWD\n:\n:
ALERT HOURLY ACCUMULATOR DATA\n:
NATIONAL WEATHER SERVICE FORT WORTH TX\n:
**1249 PM CST SUN MAR 5 2017**\n:\n:
HOURLY ACCUMULATOR INFORMATION TABLE\n:\n:
NOTE: ERRONEOU S REPORTS MAY BE RECEIVED UNDER CERTAIN\n:
WEATHER CONDITIONS\n:\n:
**********************************************************\n:
ID LOCATION ACCUMULATOR VALUE\n:
**********************************************************\n:
**CITY OF DALLAS ALERT SYSTEM**
\n**.A DCQT2 170305 C DH124216 /HGIRS
396.7**:
\n\n**.A DCVT2 170305 C DH123434 /HGIRS 516.8**:
\n\n**.A DAOT2 170305 C DH123721 /HGIRS 534.2**:\n\n**.A DDCT2
170305 C DH120338 /HGIRS 395.0**:\n\n**.A DAHT2 170305 C DH114758 /HGIRS
496.1**:\n\n\n\n']
This is an image of the data I grab from the web
import urllib
import re
htmlfile=urllib.urlopen("http://forecast.weather.gov/product.php?site=NWS&issuedby=FWD&product=RR5&format=CI&version=1&glossary=0")
htmltext=htmlfile.read()
regex='<pre class="glossaryProduct">(.+?)</pre>'
pattern=re.compile(regex,re.S)
out=re.findall(pattern, htmltext)
text=str(out)
saveFile=open('test.txt', 'w')
saveFile.write(text)
saveFile.close()
print (text)
答案 0 :(得分:1)
在python3中,您可以尝试以下操作:
import urllib.request
import re
htmlfile=urllib.request.urlopen("http://forecast.weather.gov/product.php?site=NWS&issuedby=FWD&product=RR5&format=CI&version=1&glossary=0")
htmltext=htmlfile.read()
regex='<pre class="glossaryProduct">(.+?)</pre>'
pattern=re.compile(regex,re.S)
out=re.findall(pattern, htmltext.decode())
print("7'th line:", out[0].split('\n')[7])
print(out[0].split('\n')[17])
# print all the lines
for line in out[0].split('\n'):
print(line)
答案 1 :(得分:1)
NOAA数据通常会定期格式化。最好的方法是将输入分成单独的行,然后逐行循环。
略读行,除非他们以您感兴趣的词组或关键词开头。例如:
for line in text.split('\n'):
if any([re.match('^: [0-9]{4} [AP]M', line), # matches : 1249 PM
line.startswith(': CITY OF'), # CITY OF...
line.startswith('.A D')]): # .A D....
saveFile.write(line)
(您需要根据实际可能的线值修改上述基础。)