ホームページ >バックエンド開発 >Python チュートリアル >Pythonで指定した文字の前後をすべて削除する方法
my_str = 'fql!jiyik!com' separator = '!' result = my_str.split(separator, 1)[0] print(result) # ????️ 'fql'
str.split() メソッドを使用して、文字 (例では!) 以降のすべてを削除します。
str.split() メソッドは、区切り文字を使用して文字列を部分文字列のリストに分割します。
このメソッドは次の 2 つのパラメータを受け取ります:
separator は区切り文字が表示されるたびに文字列を部分文字列に分割します
maxsplit最大でも maxsplit 分割を完了します (オプション)
文字列内に区切り文字が見つからない場合は、要素を 1 つだけ含むリストが返されます。
文字列を分割する必要があるのは 1 回だけであるため、maxsplit パラメータを 1 に設定します。
この例では、文字列内で最初に出現した文字以降のすべてを削除します。
my_str = 'fql!jiyik!com' separator = '!' result_1 = my_str.split(separator, 1)[0] print(result_1) # ????️ 'fql' # ????️ ['fql', 'jiyik!com'] print(my_str.split(separator, 1))
区切り文字は文字列に含まれないことに注意してください。これを含める必要がある場合は、加算 ( ) 演算子を使用します。
my_str = 'fql!jiyik!com' # ✅ 删除字符后的所有内容,保留分隔符 separator = '!' result = my_str.split(separator, 1)[0] + separator print(result) # ????️ fql!
加算演算子は、Python で文字列を連結するために使用できます。
文字列内の文字が最後に出現した後のすべてを削除する必要がある場合は、str.rsplit() メソッドを使用します。
my_str = 'fql!jiyik!com' separator = '!' # ✅ 删除字符最后一次出现后的所有内容 result = my_str.rsplit(separator, 1)[0] print(result) # ????️ 'fql!jiyik'
rsplit() は、右側から分割する点を除いて、split() と同様に動作します。
str.rsplit() メソッドは文字列を右から分割します。maxsplit が 1 に設定されている場合、一度だけ分割されます。
分割する文字を含める必要がある場合は、加算演算子 ( ) を使用します。
my_str = 'fql!jiyik!com' separator = '!' result = my_str.rsplit(separator, 1)[0] + separator print(result) # ????️ 'fql!jiyik!'
str.partition() メソッドを使用して、文字列内の特定の文字以降のすべてを削除することもできます。
my_str = 'fql!jiyik!com' separator = '!' result = my_str.partition(separator)[0] print(result) # ????️ 'fql' result = ''.join(my_str.partition(separator)[0:2]) print(result) # ????️ 'fql!'
str.partition メソッドは、指定された区切り文字が最初に出現した時点で文字列を分割します。
このメソッドは、区切り文字の前の部分、区切り文字の後の部分、区切り文字の後の部分の 3 つの要素を含むタプルを返します。
my_str = 'fql!jiyik!com' separator = '!' # ????️ ('fql', '!', 'jiyik!com') print(my_str.partition(separator))
文字列内に区切り文字が見つからない場合、このメソッドは文字列とその後に 2 つの空の文字列を含むタプルを返します。
結果に区切り文字を含める必要がある場合は、str.join() メソッドを使用して、最初と 2 番目のリスト項目を結合します。
my_str = 'fql!jiyik!com' separator = '!' result = ''.join(my_str.partition(separator)[0:2]) print(result) # ????️ 'fql!'
str.join メソッドは、反復可能オブジェクトをパラメーターとして受け取り、反復可能オブジェクト内の文字列を連結した文字列を返します。
このメソッドが呼び出される文字列は、要素間の区切り文字として使用されます。
文字列内の文字より前をすべて削除するには:
str.find( を使用します) ) メソッドは文字のインデックスを取得します。
文字列スライスを使用し、開始インデックスを文字のインデックスに設定します。
新しい文字列には前の文字は含まれません。
my_str = 'apple, banana' result = my_str[my_str.find('b'):] print(result) # ????️ banana
str.find メソッドは、文字列内で指定された部分文字列が最初に出現するインデックスを返します。
文字列スライスを使用して、文字のインデックスから始まり文字列の末尾まで続く元の文字列の一部を取得します。
文字列内に部分文字列が見つからない場合、str.find() メソッドは -1 を返すことに注意してください。
if/else ステートメントで find() メソッドが -1 を返す状況を処理できます。
my_str = 'apple, banana' index = my_str.find('b') print(index) # ????️ 7 if index != -1: result = my_str[index:] else: result = my_str # ????️ alternatively raise an error print(result) # ????️ 'banana'
これは、指定された文字が文字列にない場合の例です。
my_str = 'apple, banana' index = my_str.find('z') print(index) # ????️ -1 if index != -1: result = my_str[index:] else: result = my_str # ????️ alternatively raise an error print(result) # ????️ 'apple, banana'
else ステートメントは結果変数を文字列全体に割り当てますが、例外がスローされる可能性があります。
my_str = 'apple, banana' index = my_str.find('z') print(index) # ????️ -1 if index != -1: result = my_str[index:] else: # ????️ this runs raise IndexError('provided character not in string')
文字が最後に出現する前にすべてを削除する必要がある場合は、str.rfind() メソッドを使用します。
my_str = 'apple,banana,bear' result = my_str[my_str.rfind('b'):] print(result) # ????️ 'bear'
str.rfind メソッドは、指定された部分文字列が見つかった文字列内の最大のインデックスを返します。
文字列に部分文字列が含まれていない場合、このメソッドは -1 を返します。
if/else ステートメントを使用すると、文字列に文字が存在しない状況を処理できます。
my_str = 'apple,banana,bear' index = my_str.rfind('b') if index != -1: result = my_str[index:] else: result = my_str print(result) # ????️ 'bear'
else ブロックが実行される場合、結果変数を文字列全体に設定します。
あるいは、raise IndexError('your message here') のように、else ブロックでエラーを発生させることもできます。
str.rsplit() メソッドを使用して、その文字が最後に出現する前のすべてを削除することもできます。
文字が最後に出現する前にすべてを削除するには:
使用します。 str.rsplit() メソッドは文字列を右から分割します。
インデックス 1 のリスト項目にアクセスします。
結果は、その文字が最後に出現した後のすべてを含む文字列になります。
my_str = 'example.com/articles/python' result = my_str.rsplit('/', 1)[1] print(result) # ????️ 'python' # ????️ 如果你想在结果中包含这个字符 result_2 = '/' + my_str.rsplit('/', 1)[1] print(result_2) # ????️ '/python' # ????️ ['example.com/articles', 'python'] print(my_str.rsplit('/', 1))
str.rsplit() メソッドを使用して、最後の文字が表示される前にすべてを削除します。
str.rsplit メソッドは、指定された区切り文字を区切り文字列として使用して、文字列内の単語のリストを返します。
my_str = 'one two three' print(my_str.rsplit(' ')) # ????️ ['one', 'two', 'three'] print(my_str.rsplit(' ', 1)) # ????️ ['one two', 'three']
このメソッドは次の 2 つのパラメータを受け取ります:
separator は区切り文字が出現するたびに文字列を部分文字列に分割します
maxsplit は最大でも maxsplit 分割を行います。右端 (オプション)
rsplit() は、右からの分割を除き、split() と同様に動作します。
请注意 ,我们为 maxsplit 参数提供了值 1,因为我们只想从右侧拆分字符串一次。
my_str = 'example.com/articles/python' result = my_str.rsplit('/', 1)[1] print(result) # ????️ 'python' # ????️ ['example.com/articles', 'python'] print(my_str.rsplit('/', 1))
最后一步是访问索引 1 处的列表元素,以获取包含指定字符最后一次出现之后的所有内容的字符串。
如果要在结果中包含该字符,请使用加法 + 运算符。
my_str = 'example.com/articles/python' result = '/' + my_str.rsplit('/', 1)[1] print(result) # ????️ '/python'
或者,我们可以使用 str.rpartition() 方法。
my_str = 'example.com/articles/python' result = my_str.rpartition('/')[2] print(result) # ????️ 'python' # ????️ ('example.com/articles', '/', 'python') print(my_str.rpartition('/'))
str.rpartition 方法在提供的分隔符的最后一次出现处拆分字符串。
该方法返回一个包含 3 个元素的元组 - 分隔符之前的部分、分隔符和分隔符之后的部分。
如果在字符串中找不到分隔符,则该方法返回一个包含两个空字符串的元组,后跟字符串本身。
如果需要在结果中包含分隔符,请使用 str.join() 方法连接第二个和第三个列表项。
my_str = 'example.com/articles/python' result = ''.join(my_str.rpartition('/')[1:]) print(result) # ????️ '/python'
str.join 方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联。
调用该方法的字符串用作元素之间的分隔符。
以上がPythonで指定した文字の前後をすべて削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。