連結 - python 文字列 部分一致




文字列を部分文字列にする方法はありますか? (8)

3文字目から新しい文字列を文字列の最後まで取得するには、Pythonで文字列を部分文字列にする方法がありますか?

myString[2:end]ようなものでしょうか?

2番目の部分を残しておくと「終わりまで」という意味ですが、最初の部分を離れると、最初から始まりますか?


3文字目から新しい文字列を文字列の最後まで取得するには、Pythonで文字列を部分文字列にする方法がありますか?

myString[2:end]ようなものでしょうか?

はい、これは実際には、名前、 endを定数singletonに割り当てたり、 bindたりbind場合に機能します。None:

>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'

スライス表記には3つの重要な議論があります:

  • 開始
  • やめる
  • ステップ

与えられていないときのデフォルトはNoneが、明示的に渡すことができます:

>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'

2番目の部分を残しておくと「終わりまで」という意味ですが、最初の部分を離れると、最初から始まりますか?

はい、たとえば:

>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'

スライスにはstartが含まれていることに注意してください。ただし、停止するまでは停止するだけです。

stepがNone場合、デフォルトでは、スライスはステップに1を使用します。 負の整数でステップすると、Pythonは最後から最後まで十分にスマートです。

>>> myString[::-1]
'0987654321'

私はスライス表記法を説明するために私の答えでスライス表記を非常に詳細に説明します。


1つの例はここでは欠落しているようです:フル(浅い)コピー。

>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>> 

これは、文字列型ではなくシーケンス型のコピーを作成する一般的なイディオムです。 [:] Shallowはリストをコピーしますpython-list-slice-used-for-no-obvious-reason参照してください。


あなたは「終わり」を除いてすぐそこにいるのです。 スライス表記と呼ばれています。 あなたの例を読む必要があります:

new_sub_string = myString[2:]

2番目のパラメータを省略すると、暗黙的に文字列の終わりになります。


これを実現する一般的な方法は、文字列のスライスによるものです。 MyString[a:b]は、インデックスaから(b-1)までの部分文字列をMyString[a:b]ます。


たぶん私はそれを逃したが、私はこのページで元の質問に完全な答えを見つけることができませんでした。 だから私は検索を続けなければならなかった。

私はまだコメントすることができないので、ここで私の結論を追加してみましょう。 私はこのページにアクセスする際に私が興味を持ったのは唯一の人ではなかったと確信しています:

 >>>myString = 'Hello World'
 >>>end = 5

 >>>myString[2:end]
 'llo'

あなたが最初の部分を離れると、あなたは

 >>>myString[:end]
 'Hello' 

そして、あなたが残した場合:中にも、最も単純な部分文字列があります。これは5番目の文字です(0から始まるので、この場合は空白です)。

 >>>myString[end]
 ' '

ディスカッションに2つのポイントを追加したいと思います:

  1. 空のスペースでは、代わりに「 None 」を使用して、「開始から」または「終了から」を指定できます。

    'abcde'[2:None] == 'abcde'[2:] == 'cde'
    

    これは、空のスペースを引数として指定できない関数で特に役に立ちます。

    def substring(s, start, end):
        """Remove `start` characters from the beginning and `end` 
        characters from the end of string `s`.
    
        Examples
        --------
        >>> substring('abcde', 0, 3)
        'abc'
        >>> substring('abcde', 1, None)
        'bcde'
        """
        return s[start:end]
    
  2. Pythonにはsliceオブジェクトがあります:

    idx = slice(2, None)
    'abcde'[idx] == 'abcde'[2:] == 'cde'
    

他の誰もそれを言及していないので、完全性のために。 アレイスライスの3番目のパラメータはステップです。 だから、文字列を逆にするのは簡単です:

some_string[::-1]

または、代替文字を選択するには:

"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"

文字列を前後に移動する機能は、スライスを開始点または終了点から配列できるようにすることと一貫性を維持します。


>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'

Pythonはこの概念を「スライシング」と呼び、単なる文字列以外のものでも動作します。 包括的な紹介をhereください。





string