0

以下のコードを使用して、Web サイト内のデータの検索とカウントを実行しようとしています。デバッグ用にコードにいくつかの余分なプリントを追加したことがわかります。現在、結果は常に「0」であり、ある種のファイルの読み取りエラー。html という変数を出力すると、検索している 3 つの文字列すべてが html に含まれていることがはっきりとわかりますが、前述のように、どの出力も何も出力せず、最終的な出力カウントは単純に「0」を返します。ご覧のとおり、私は 3 つの異なる方法を試しましたが、毎回同じ問題が発生しました。

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

4

1 に答える 1

2

正規表現の方法 3 については、count を実行する前に検索結果をグループ化していないようです。あなたが見ている HTML はありませんが、'.' の使用で問題が発生している可能性もあります。2 つの検索語の間に改行がある場合。これらの問題を念頭に置いて、これらのエラーを修正するために次のようなことを試してください (注: 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)

また、正規表現検索の大文字と小文字の区別に関する上記のコメントにも注意してください。お役に立てれば :)

于 2013-07-27T21:29:03.517 に答える