ホームページ >バックエンド開発 >Python チュートリアル >Python で、複数の区切り文字を含む文字列を分割するにはどうすればよいですか?

Python で、複数の区切り文字を含む文字列を分割するにはどうすればよいですか?

WBOY
WBOY転載
2023-05-09 19:25:062605ブラウズ

複数の区切り文字を使用して文字列を分割するには:

re.split() メソッドを使用します (例: re.split(r',|-', my_str)

re.split() メソッドは、出現する文字列をすべて区切り文字の 1 つで分割します。

import re
# ????️ 用 2 个分隔符拆分字符串
my_str = 'fql,jiyik-dot,com'
my_list = re.split(r',|-', my_str)  # ????️ 以逗号或连字符分隔
print(my_list)  # ????️ ['fql', 'jiyik', 'dot', 'com']

re.split メソッドはパターンと文字列を受け入れ、パターンが発生するたびに文字列を分割します。

パイプ | 文字は or です。 A または B に一致します。

この例では、2 つの区切り文字 (カンマとハイフン) を使用して文字列を分割します。

# ????️ 用 3 个分隔符拆分字符串
my_str = 'fql,jiyik-dot:com'
my_list = re.split(r',|-|:', my_str)  # ????️ comma, hyphen or colon
print(my_list)  # ????️ ['fql', 'jiyik', 'dot', 'com']

ここでは、3 つの区切り文字 (カンマ、ハイフン、コロン) を使用して文字列を分割する例を示します。

正規表現では、必要なだけ | 文字を使用できます。

角括弧 [] を使用して複数の区切り文字に基づいて文字列を分割します

また、角括弧 [] を使用して文字のグループを示すこともできます。

import re
my_str = 'fql,jiyik-dot,com'
my_list = re.split(r'[,-]', my_str)
print(my_list)  # ????️ ['fql', 'jiyik', 'dot', 'com']

Python で、複数の区切り文字を含む文字列を分割するにはどうすればよいですか?

角括弧の間にすべての区切り文字を必ず追加してください。

import re
# ????️ 用 3 个分隔符拆分字符串
my_str = 'fql,jiyik-dot:com'
my_list = re.split(r'[,-:]', my_str) # 以逗号、连字符、冒号分割
print(my_list)  # ????️ ['fql', 'jiyik', 'dot', 'com']

文字列がこれらの区切り文字のいずれかで開始または終了する場合、出力リストに空の文字列値が得られる可能性があります。

先頭または末尾の区切り文字の処理

リスト内包表記を使用して、リストから空の文字列を削除できます。

import re

# ????️ 用 3 个分隔符拆分字符串
my_str = ',fql,jiyik-dot:com:'

my_list = [
    item for item in re.split(r'[,-:]', my_str)
    if item
]

print(my_list)  # ????️ ['fql', 'jiyik', 'dot', 'com']

リスト内包表記は、リストから空の文字列を削除する役割を果たします。

リスト内包表記は、各要素に対して特定の操作を実行するか、条件を満たす要素のサブセットを選択するために使用されます。

もう 1 つの方法は、str.replace() メソッドを使用することです。

複数の区切り文字で文字列を分割するには str.replace() を使用します。

複数の区切り文字で文字列を分割するには:

  • を使用します。 str.replace() メソッドを使用して、最初の区切り文字を 2 番目の区切り文字に置き換えます。

  • str.split() メソッドを使用して、2 番目の区切り文字で文字列を分割します。

  • my_str = 'fql_jiyik!dot_com'
    my_list = my_str.replace('_', '!').split('!')
    print(my_list)  # ????️ ['fql', 'jiyik', 'dot', 'com']
このメソッドは、分割する区切り文字が 2 個など、少数の場合にのみ便利です。

まず、出現するすべての区切り文字を置換します。最初の区切り文字と 2 番目の区切り文字を分割し、2 番目の区切り文字を分割します。

str.replace メソッドは、出現するすべての部分文字列が指定された置換によって置き換えられた文字列のコピーを返します。 ##このメソッドは次のパラメータを受け取ります:

  • #old

    文字列内で置換する部分文字列

  • new

    old

  • #count
  • の出現箇所をすべて置換します。count の最初の出現箇所のみを置換します (オプション)

このメソッドは元の文字列を変更しないことに注意してください。 Python では文字列は不変です。

もう 1 つの例を示します。

my_str = 'fql jiyik, dot # com. abc'

my_list = my_str.replace(
    ',', '').replace(
    '#', '').replace('.', '').split()

print(my_list)  # ????️ ['fql', 'jiyik', 'dot', 'com', 'abc']

str.replace()

メソッドを使用して、文字列を空白文字で分割する前に句読点を削除します。

指定された文字を削除したいため、空の文字列を置換に使用します。

str.replace()

メソッドへの呼び出しは、必要なだけ連鎖させることができます。

最後のステップでは、str.split() メソッドを使用して文字列を単語のリストに分割します。

str.split() メソッドは、区切り文字を使用して文字列を部分文字列のリストに分割します。

このメソッドは次の 2 つのパラメータを受け取ります:

#separator
    区切り文字が表示されるたびに文字列を部分文字列に分割します
  • maxsplit
  • 最大でも完全な maxsplit 分割 (オプション)
  • 区切り文字が

    str.split()
  • に渡されない場合メソッドを使用すると、入力文字列が 1 つ以上の空白文字に分割されます。
my_str = 'fql jiyik com'
print(my_str.split())  # ????️ ['fql', 'jiyik', 'com']

文字列内に区切り文字が見つからない場合は、要素を 1 つだけ含むリストが返されます。 再利用可能な関数を使用して複数の区切り文字に基づいて文字列を分割する

複数の区切り文字に基づいて文字列を頻繁に分割する必要がある場合は、再利用可能な関数を定義してください。

import re

def split_multiple(string, delimiters):
    pattern = '|'.join(map(re.escape, delimiters))

    return re.split(pattern, string)

my_str = 'fql,jiyik-dot:com'

print(split_multiple(my_str, [',', '-', ':']))

split_multiple

この関数は文字列と区切り文字のリストを受け入れ、区切り文字に基づいて文字列を分割します。

str.join() メソッドは、区切り文字とパイプ

|

を結合するために使用されます。ディバイダー。 <pre class="brush:py;"># ????️ ,|-|: print(&amp;#39;|&amp;#39;.join([&amp;#39;,&amp;#39;, &amp;#39;-&amp;#39;, &amp;#39;:&amp;#39;]))</pre>これにより、指定された区切り文字に基づいて文字列を分割するために使用できる正規表現パターンが作成されます。 文字列を複数の区切り文字を含む単語リストに分割する必要がある場合は、

re.findall()

メソッドを使用することもできます。

re.findall() を使用して文字列を単語のリストに分割する

re.findall()

メソッドを使用して文字列を単語のリストに分割する複数の区切り文字を含む単語リスト。

re.findall() このメソッドは、単語が出現するたびに文字列を分割し、その単語を含むリストを返します。

import re

# ✅ 将字符串拆分为具有多个分隔符的单词列表
my_str = &#39;fql jiyik, dot # com. abc&#39;

my_list = re.findall(r&#39;[\w]+&#39;, my_str)
print(my_list)  # ????️ [&#39;fql&#39;, &#39;jiyik&#39;, &#39;dot&#39;, &#39;com&#39;, &#39;abc&#39;]

re.findall このメソッドは、パターンと文字列をパラメータとして受け取り、文字列内で重複しないパターンの出現をすべて含む文字列のリストを返します。

我们传递给 re.findall() 方法的第一个参数是一个正则表达式。

import re

my_str = &#39;fql jiyik, dot # com. abc&#39;

my_list = re.findall(r&#39;[\w]+&#39;, my_str)
print(my_list)  # ????️ [&#39;fql&#39;, &#39;jiyik&#39;, &#39;dot&#39;, &#39;com&#39;, &#39;abc&#39;]

方括号 [] 用于表示一组字符。

\w 字符与 Unicode 单词字符匹配,并且包括可以作为任何语言的单词一部分的大多数字符。

加号 + 使正则表达式匹配前面字符(Unicode 字符)的 1 次或多次重复。

re.findall() 方法返回一个包含字符串中单词的列表。

以上がPython で、複数の区切り文字を含む文字列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。