我正在尝试从包含大量空格的页面中提取信息,所以我想要搜索任何字母并获取其位置,而不仅仅是一个字母。如何实现这一目标?
编辑:我想在这个网站http://www.aviationweather.gov/static/adds/metars/stations.txt搜索一个用户输入的城市,比如安克雷奇。然后该程序将搜索锚地。然后我想抓住接下来的四个字母,但是txt格式化的方式是城市和四个字母代码之间的空格数对于每个城镇都是不同的。
答案 0 :(得分:1)
您可以使用
listed = text.split()
分隔所有空格上的文字。 然后你将有一个仅包含字符的列表。
citypos = listed.index("Anchorage")
code = listed[citypos+1][:4]
要搜索字母和数字,请执行以下操作:
positions = []
y = 0
for x in text:
if x.isalnum(): positions.append(y)
y += 1
在编辑问题之前,这就是它的样子。
答案 1 :(得分:0)
看起来你正在解析一个固定宽度的结构,struct
模块在这里会很方便。有关示例,请参阅this answer。
您要做的是定义记录的格式字符串,然后调用struct.unpack
将其转换为值元组。您可以将其与namedtuple
定义配对,以便按名称访问。仅使用前几个的有限示例:
from collections import namedtuple
from struct import unpack
Weather = namedtuple('Weather', 'cd station icao iata') # define the fieldnames
metar_fmt = '2s x 16s x 4s xx 3s xx' # 's' represents string, 'x' is "ignore"
w = Weather._make(struct.unpack(metar_fmt, 'AK ANCHORAGE INTL PANC ANC '))
# now you can use your namedtuple by fieldname:
print w.cd, w.station, w.icao, w.iata
if w.station.startswith('ANCHORAGE'):
print w.icao