私は自分の手に悪夢のような状況を抱えています(または、簡単かもしれませんが、わかりません)...だから、かなり大きなpythonスクリプトで実行される小さな関数があります...大きなスクリプトですべてを解決しました、そして最後に、スクリプトは Web マップ サービスを呼び出して、問題の区画を表示します...20,000 の区画があり、そのうち 10 だけが Deedholder 名に「%」を持っています。したがって、これは 99% 以上の確率で機能しますが、常にその 1% (この場合はそれよりもはるかに少ない) です。
問題は、権利所有者の名前にパーセント記号が含まれるまれな状況で、URL を指定してもクエリが見つからないことです。だから私はたくさんの名前をテストしましたが、名前にパーセント記号がある場合にのみ機能しません。
したがって、プレフィックスは次のようになります。
' https://cedar.integritygis.com/default.aspx?ql=Parcel&qf=REALDATA_DEEDHOLDER&qv= '
名前は次のように末尾に追加されます。
「クーパー マイケル A & デブラ K」
私のコードでは、スペースを「%20」に、& を「%26」に簡単に置き換えることができます。しかし、これが権利者名である場合、どうすればよいですか。
「シーベルス ローレンス J (75%) & ルイーズ F トラスト (25%)」
このクエリを正常に機能させることができません。問題の関数だけを含む私のテストコードは次のとおりです。
import webbrowser, time
def FixURL(string):
## string = string.replace('%','~')
print string
fix_dict = {' ':'%20','!':'%21','"':'%22','#':'%23','$':'%24',
'&':'%26',"'":'%27','(':'%28',')':'%29',
'*':'%2A','+':'%2b','.':'%2E','/':'%2F',':':'%3A',
';':'%3B','?':'%3F','@':'%40','{':'%7B','{':'%7D'}
for k,v in fix_dict.iteritems():
if k in string:
string = string.replace(k,v)
## return string.replace('~','%25')
return string
if __name__ == '__main__':
# testing
easy = FixURL('COOPER MICHAEL A & DEBRA K')
prefix = 'https://cedar.integritygis.com/default.aspx?ql=Parcel&qf=REALDATA_DEEDHOLDER&qv='
url = '{}{}'.format(prefix,easy)
print easy
webbrowser.open(url)
time.sleep(15) # give it time to work
hard = FixURL('SIEBELS LAWRENCE J (75%) & LOUISE F TRUST (25%)')
print hard
url = '{}{}'.format(prefix,hard)
webbrowser.open(url)
「だます」方法がわかりません...失敗した試みがコメントアウトされていることがわかります。誰にも修正がありますか?私が考えていることの1つは、辞書からスペースを削除し、 '%20'.join(string.split()) を使用して、リスト内の各項目をテストして、URL の置換値を調べることです...アイデアはありますか? 私はまた Python に圧迫されているようです。ありがとう。
編集:
それ以来、関数全体をスクラッチして、ただの urllib.quote() です。これはテストとして:
import webbrowser, urllib, time
prefix = 'https://cedar.integritygis.com/default.aspx?ql=Parcel&qf=REALDATA_DEEDHOLDER&qv='
easy = urllib.quote('COOPER MICHAEL A & DEBRA K')
url = '{}{}'.format(prefix,easy)
print easy
webbrowser.open(url)
time.sleep(15) # give it time to work
hard = urllib.quote('SIEBELS LAWRENCE J (75%) & LOUISE F TRUST (25%)')
print hard
url = '{}{}'.format(prefix,hard)
webbrowser.open(url)
これは、指定された名前が所有する区画にズームすることになっています...最初のものは機能しますが、2番目のものは括弧内の%のために機能しません(私は思う)。「ol query returned no results」というエラーが表示されます。