あなたの知らないPythonのstrip()関数の魔法の使い方

Y2J
リリース: 2017-05-18 14:19:45
オリジナル
2620 人が閲覧しました

【前菜】

Pythonのstripメソッドに関しては、Pythonに触れたことがある人なら誰でも、主にスペースを削除するために使用されることを知っているはずです。これを実現するには 2 つの方法があります。

方法 1: 組み込み関数を使用する

if name == 'main' :
    str = ' Hello world '
    print '[%s]' %str.strip()
ログイン後にコピー

方法 2: 文字列モジュール内のメソッドを呼び出す

import string
if name == 'main' :
    str = ' Hello world '
    print '[%s]' %string.strip(str)
ログイン後にコピー

これら 2 つの呼び出しの違いを知っていますか?以下は個人的な意見です

Ø str.strip() は Python を呼び出す組み込み関数であり、string.strip(str) は string モジュール内のメソッドです

Ø string.strip(str) は文字列モジュールで定義されます。そして、str.strip() は組み込みモジュールで定義されています

質問 1: モジュール内のメソッドが組み込みモジュールで定義されているかどうかを確認するにはどうすればよいですか?

dir (モジュール名) を使用して、「builtins」属性があるかどうかを確認します。

例: 文字列モジュールを表示します

print dir(string)
ログイン後にコピー

質問 2. Python のすべての組み込み関数を表示する方法

  print dir(sys.modules[ 'builtin' ])
ログイン後にコピー

質問 3. 組み込みモジュールの組み込み関数定義を表示する方法

 print help(builtins)
ログイン後にコピー

以上は皆さんご存知の内容です

【固いご飯】

まずは以下のプログラムの実行結果をご覧ください:

if name == 'main' :
    str = 'hello world'
    print str.strip( 'hello' )
    print str.strip( 'hello' ).strip()
    print str.strip( ' heldo ' ).strip()    #sentence 1
    stt = 'h1h1h2h3h4h'
    print stt.strip( 'h1' )                #sentence 2
    s = '123459947855aaaadgat134f8sfewewrf7787789879879'
    print s.strip( '0123456789' )         #sentence 3
ログイン後にコピー

結果は次のページに表示されます:

実行結果:

world
world
wor
2h3h4
aaaadgat134f8sfewewrf
ログイン後にコピー

正解できましたか? O(∩_∩)O~

全問正解したら、ここで32いいねを差し上げます...

結果分析:

まず、文字列モジュール内のストリップのソースコードを確認してみましょう:

# Strip leading and trailing tabs and spaces
def strip (s, chars= None ):
    """strip(s [,chars]) -> string
    Return a copy of the string swith leading and trailing
    whitespace removed.
    If chars is given and not None,remove characters in chars instead.
    If chars is unicode, S will beconverted to unicode before stripping.
    """
return s.strip(chars)
ログイン後にコピー

不可能な翻訳 見てください: このメソッドは、先頭と末尾のスペースとタブを削除するために使用されます。スペースを削除した Sstring のコピーを返します。パラメータ chars の値が None でない場合、chars に含まれるすべての文字が削除されます。 chars が Unicode の場合、S は Unicode に変換されてから演算されます。

以下は上記段落の文 1 2 3 の説明です:

str = 'hello world'
print str.strip( ' heldo ' ).strip()
ログイン後にコピー
result:wor
执行步骤:
elloworld
lloworld
oworld
oworl
 worl
 wor
wor
ログイン後にコピー

具体的なコード実行プロセス:

  print str.strip( 'h' )
    print str.strip( 'h' ).strip( 'e' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' ).strip( 'd' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' ).strip( 'd' ).strip( 'o' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' ).strip( 'd' ).strip( 'o' ).strip( 'l' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' ).strip( 'd' ).strip( 'o' ).strip( 'l' ).strip()
ログイン後にコピー

理解できるかわかりませんが謎ですが、私はプロジェクトマネージャーの Shaan Fenyong の助けでこのパターンを発見しました。

ここで少しまとめます:

s.strip(chars) の使用規則:

まず chars の最初の文字を走査して、それが S の先頭と末尾にあるかどうかを確認します。そうであれば、それを削除します。削除した新しい文字列を s に設定し、chars の最初の文字から始めて ループ を継続します。そうでない場合は、chars の 2 文字目から直接開始してください。 s の最初と最後の文字が chars 内になくなるまでループを続け、その後ループは終了します。

キーポイント: chars 内の文字が S で始まり S で終わるかどうかを確認してください

このメソッドを読んだ後、Python ソースコードの開発者がとても素晴らしく、このような古典的なアルゴリズムを考えることもできることがわかりました。

【食後のお菓子】

この方法は主に、特定のルールに従って両端の指定された文字を削除するために使用されます。文3が良いアプリケーションであれば。

例: 文字列の両端の数字をインターセプトする、または特徴的な文字の最初と最後の出現の間の文字列を取得するなど。

【関連おすすめ】

1. 無料のPythonビデオチュートリアル

2. Pythonのstrip()のあまり知られていない罠

3.

Pythonの基本的な入門では、strip()の使い方を説明します。 ) 関数 Space nrt

4.

Pythonのstrip()とsplit()の使い方の詳しい説明

5.

Pythonのstrip関数の使用シナリオの詳細な説明

以上があなたの知らないPythonのstrip()関数の魔法の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート