ホームページ  >  記事  >  バックエンド開発  >  あなたの知らないPythonのstrip()関数の魔法の使い方

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

Y2J
Y2Jオリジナル
2017-05-18 14:19:452626ブラウズ

【前菜】

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。