2017-04-22 27 views
0

変数を関数に渡していて、いくつかの潜在的な望ましくない形式を考慮して、最終的な使用のために適切にフォーマットされていることを確認したいとします。Python変数の突然変異のベストプラクティス

例; http://またはhttps://を使わずに、小文字のurlアドレス表現しか保存しません。

def standardize(url): 
    # Lowercase 
    temp_url = url 
    url = temp_url.lower() 

    # Remove 'http://' 
    if 'http://' in url: 
     temp_url = url 
     url = temp_url.replace('http://', '') 

    if 'https://' in url: 
     temp_url = url 
     url = temp_url.replace('https://', '') 

    return url 

私はちょうど初心者のタイトルを侵害していて、このタイプのプロセスを達成するためのより多くのニシキヘビのアプローチがあるかどうか不思議でしたか?このようhttps://myurl.com/RANDoMとして、URLのtrasformationさ

エンド・ゴール - >myurl.com/random

URL文字列の整形のアプリケーションは特に重要ではありません。

+0

あなたは 'temp_url'は必要ありません。それ以外は、これはかなり典型的なようです。 –

+0

'url = temp_url.lower()'ではなく 'url.lower()'だけですか? – theeastcoastwest

+0

あなたはまだ 'url'にそれを割り当てる必要があるので、' url = url.lower() 'しかし、私はあなたの質問が何であるか正確には分かりません。 –

答えて

1
def standardize(url): 
    return url.lower().replace("https://","").replace("http://","") 

私はそれを作ることができるほど簡単ですが、チェーンはちょっと醜いです。あなたが正規表現をインポートする場合

、また、このような何かを行うことができ:

import re 

def standardize(url): 
    return re.sub("^https?://", "", url.lower()) 
+0

それは確かに私が疑問に思っていたものです。私はちょっと自分が考えている変数をどのようにフォーマットすることができるのかちょっと混乱していました。 – theeastcoastwest

+0

@Darkstaroneこれは正確に私の答え(正規表現の部分)をコピーしています....そしてあなたはそれが許可されていないことを知っています:( – abccd

+0

それは私に興味のあった非正規表現の答えでした – theeastcoastwest

3

シンプルre.subは、トリックを行います:

import re 
def standardize(url): 
    return re.sub("^https?://",'',url.lower()) 

# with 'https' 
print(standardize('https://myurl.com/RANDoM')) # prints 'myurl.com/random' 
# with 'http' 
print(standardize('http://myurl.com/RANDoM')) # prints 'myurl.com/random' 
# both works 
関連する問題