0

私は自分の手に悪夢のような状況を抱えています(または、簡単かもしれませんが、わかりません)...だから、かなり大きな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」というエラーが表示されます。

4

1 に答える 1