试图爬取天气状况(列表v中的索引9),并将变量保存以备后用。但是写正则表达式以存储仅为1或2个单词的条件时遇到了困难。
在regexr.com上测试了我的正则表达式代码,看起来很好,但在IDLE中运行时无效。
v = ['\n\n7:53 AM\n\n\n\n\n',
'\n\n\n\n\n\n48 \nF\n \n\n\n\n\n\n\n',
'\n\n\n\n\n\n45 \nF\n \n\n\n\n\n\n\n',
'\n\n\n\n\n\n89 \n%\n \n\n\n\n\n\n\n',
'\n\nSE\n\n\n\n\n',
'\n\n\n\n\n\n5 \nmph\n \n\n\n\n\n\n\n',
'\n\n\n\n\n\n0 \nmph\n \n\n\n\n\n\n\n',
'\n\n\n\n\n\n30.11 \nin\n \n\n\n\n\n\n\n',
'\n\n\n\n\n\n0.0 \nin\n \n\n\n\n\n\n\n',
'\n\nMostly Cloudy\n\n\n\n\n']
for condition in str(v[9]):
condition_search = re.findall('[A-Z]\w+', condition)
if len(condition_search) > 1:
condition = ' '
condition = condition.join(condition_search)
else:
condition = str(condition_search)
print(condition)
实际结果:
'[]'
期望结果
'Mostly Cloudy'
if re.search(r'^[A-Z]\w*(?:\s+[A-Z]\w*)?$', v[9].strip()): condition = v[9].strip()
- Wiktor Stribiżewjoin()
函数与只有一个元素的列表,这样就不需要测试了。 - Barmar