我正在尝试使用下面的代码在网站中执行数据搜索和计数,你可以看到我在代码中添加了一些额外的打印用于调试,目前结果总是“0”,这对我说读取某种文件时出错。如果我打印名为html的变量,我可以清楚地看到我正在搜索的所有三个字符串都包含在html中,但如前所述,我的打印件都没有打印任何内容,最终打印计数只返回“0”。如你所见,我尝试了三种不同的方法,每次都有同样的问题。
import urllib2
import urllib
import re
import json
import mechanize
post_url = "url_of_fishermans_finds"
browser = mechanize.Browser()
browser.set_handle_robots(False)
browser.addheaders = [('User-agent', 'Firefox')]
html = browser.open(post_url).read().decode('UTF-8')
# Attempted method 1
print html.count("SEA BASS")
# Attempted method 2
count = 0
enabled = False
for line in html:
if 'MAIN FISHERMAN' in line:
print "found main fisherman"
enabled = True
elif 'SEA BASS' in line:
print "found fish"
count += 1
elif 'SECONDARY FISHERMAN' in line:
print "found secondary fisherman"
enabled = False
print count
# Attempted method 3
relevant = re.search(r"MAIN FISHERMAN(.*)SECONDARY FISHERMAN", html)[1]
found = relevant.count("SEA BASS")
print found
这可能非常简单,任何评论或帮助都会非常感激。亲切的问候AEA
答案 0 :(得分:2)
关于正则表达式方法#3,您似乎没有在运行计数之前对搜索结果进行分组。我没有您正在查看的HTML,但您也可能因使用'。'而遇到麻烦。如果您的两个搜索字词之间有换行符。考虑到这些问题,请尝试使用以下内容来纠正这些错误(注意:在Python 3语法中):
relevantcompile = re.compile("MAIN FISHERMAN(.*)SECONDARY FISHERMAN", re.DOTALL)
relevantsearch = re.search(relevantcompile, html)
relevantgrouped = relevantsearch.group()
relevantcount = relevantgrouped.count("SEA BASS")
print(relevantcount)
另外,请记住以上关于正则表达式搜索的区分大小写的注释。希望这会有所帮助:)