ホームページ  >  記事  >  バックエンド開発  >  Python は任意の数の区切り文字で文字列を分割します (コードは添付されています)

Python は任意の数の区切り文字で文字列を分割します (コードは添付されています)

不言
不言転載
2018-11-27 15:50:153077ブラウズ

この記事で紹介する内容は、区切り文字の数に応じて文字列 (コード付き) を分割する Python に関するものです。一定の参考値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

1. 要件

文字列をさまざまなフィールドに分割する必要がありますが、区切り文字 (および区切り文字間のスペース) が文字列全体に含まれており、一貫性がありません。

2. 解決策

文字列オブジェクトの Split() メソッドは、非常に単純な状況のみを処理でき、複数の区切り文字をサポートしません。状況。より柔軟な関数が必要な場合は、 re.split() メソッドを使用する必要があります:

import re
line='abc def ; ghi, jkl,mno, pkr'
#分隔符:分号,都逗号,空格符,前后可以跟着任意数量的额外空格
result=re.split(r'\s*[;,\s]\s*',line)
print(result)

結果:

['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']

3. 分析

re.split() は区切り文字に複数のパターンを指定できるので便利です。たとえば、上記の解決策では、区切り文字はセミコロン、カンマ、スペースであり、その後に任意の数の追加のスペースを続けることができます。 str.split() で得られる結果と同様に、最終結果はフィールド リストです。

re.split() を使用する場合は、正規表現パターン内のキャプチャ グループが括弧内に含まれているかどうかに注意する必要があります。

キャプチャ グループが使用されている場合、一致するテキストも最終結果に含まれます。たとえば、次の場合を考えてみましょう:

import re
line='abc def ; ghi, jkl,mno, pkr'
result=re.split(r'\s*(;|,|\s)\s*',line)
print(result)

結果:

['abc', ' ', 'def', ';', 'ghi', ',', 'jkl', ',', 'mno', ',', 'pkr']

特定のコンテキストで区切り文字を取得することも役立つ場合があります。たとえば、区切り文字を含む文字列の出力を改善するには:

import re
line='abc def ; ghi, jkl,mno, pkr'
result=re.split(r'\s*(;|,|\s)\s*',line)

values=result[::2]
delimiters=result[1::2]+['']

print(values)
print(delimiters)

last=''.join(v+d for v,d in zip(values,delimiters))
print(last)

結果:

['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']
[' ', ';', ',', ',', ',', '']
abc def;ghi,jkl,mno,pkr

結果に区切り文字を表示したくないが、それでも使用したい場合は、正規表現パターンの記号 グループ化では、(?:...) の形式で指定された非キャプチャ グループを使用してください。例は次のとおりです:

import re
line='abc def ; ghi, jkl,mno, pkr'
result=re.split(r'\s*(?:;|,|\s)\s*',line)

print(result)

結果:

['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']

以上がPython は任意の数の区切り文字で文字列を分割します (コードは添付されています)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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