Dalam Python, bagaimana untuk memisahkan rentetan yang mengandungi berbilang pembatas?

WBOY
Lepaskan: 2023-05-09 19:25:06
ke hadapan
2561 orang telah melayarinya

Untuk memisahkan rentetan menggunakan berbilang pembatas:

Gunakan kaedah re.split(), contohnya re.split(r',|-', my_str). Kaedah

re.split() akan memisahkan rentetan pada semua kejadian salah satu pembatas. Kaedah

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

re.split menerima corak dan rentetan dan membelah rentetan setiap kali corak itu berlaku.

Watak paip |. Padanan A atau B.

Contoh ini membelah rentetan menggunakan 2 pembatas (koma dan sempang).

# ????️ 用 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']
Salin selepas log masuk

Berikut ialah contoh membelah rentetan menggunakan 3 pembatas (koma, sempang dan bertindih).

Kita boleh menggunakan seberapa banyak | aksara yang diperlukan dalam ungkapan biasa.

Gunakan kurungan segi empat sama [] untuk membelah rentetan berdasarkan berbilang pembatas

Sebagai alternatif, kita boleh menggunakan kurungan segi empat sama [] untuk menunjukkan sekumpulan aksara.

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

Dalam Python, bagaimana untuk memisahkan rentetan yang mengandungi berbilang pembatas?

Pastikan anda menambah semua pemisah antara kurungan segi empat sama.

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

Jika rentetan bermula atau berakhir dengan salah satu pembatas ini, kita mungkin mendapat nilai rentetan kosong dalam senarai output.

Mengendalikan pembatas di hadapan atau di belakang

Kami boleh menggunakan pemahaman senarai untuk mengalih keluar sebarang rentetan kosong daripada senarai.

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']
Salin selepas log masuk

Pemahaman senarai bertanggungjawab untuk mengalih keluar rentetan kosong daripada senarai.

Kefahaman senarai digunakan untuk melaksanakan operasi tertentu pada setiap elemen atau untuk memilih subset elemen yang memenuhi syarat.

Cara lain ialah menggunakan kaedah str.replace().

Pisah rentetan dengan berbilang pembatas menggunakan str.replace()

Untuk membelah rentetan dengan berbilang pembatas:

  • Ganti pembatas pertama dengan pembatas kedua menggunakan kaedah str.replace().

  • Pisah rentetan dengan pembatas kedua menggunakan kaedah str.split().

my_str = 'fql_jiyik!dot_com'
my_list = my_str.replace('_', '!').split('!')
print(my_list)  # ????️ ['fql', 'jiyik', 'dot', 'com']
Salin selepas log masuk

Kaedah ini hanya sesuai apabila terdapat beberapa pembatas yang anda ingin belah, seperti 2.

Pertama, kami Gantikan setiap kejadian daripada pembatas pertama dengan pembatas kedua, dan kemudian kita pecahkan pembatas kedua. Kaedah

str.replace mengembalikan salinan rentetan dengan semua kejadian subrentetan digantikan dengan penggantian yang disediakan.

Kaedah ini mengambil parameter berikut:

  • lama Subrentetan yang ingin kami gantikan dalam rentetan

  • baharu Gantikan setiap kejadian lama

  • kira Gantikan hanya kejadian pertama kiraan (pilihan)

Sila ambil perhatian bahawa kaedah ini tidak mengubah rentetan asal. Rentetan tidak boleh diubah dalam Python.

Ini satu lagi contoh.

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

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

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

Kami menggunakan kaedah str.replace() untuk mengalih keluar tanda baca sebelum membelah rentetan pada aksara ruang putih.

Kami menggunakan rentetan kosong untuk penggantian kerana kami ingin mengalih keluar aksara yang ditentukan.

Kami boleh merantai seberapa banyak panggilan ke kaedah str.replace() mengikut keperluan.

Langkah terakhir ialah membelah rentetan kepada senarai perkataan menggunakan kaedah str.split(). Kaedah

str.split() membahagikan rentetan kepada senarai subrentetan menggunakan pembatas.

Kaedah ini mengambil 2 parameter berikut:

  • pemisah Pisahkan rentetan kepada subrentetan setiap kali pemisah muncul

  • < . lebih banyak aksara ruang putih.
  • my_str = &#39;fql jiyik com&#39;
    print(my_str.split())  # ????️ [&#39;fql&#39;, &#39;jiyik&#39;, &#39;com&#39;]
    Salin selepas log masuk

    Jika pembatas tidak ditemui dalam rentetan, mengembalikan senarai yang mengandungi hanya 1 elemen. Pisah rentetan berdasarkan berbilang pembatas menggunakan fungsi boleh guna semula

  • Jika kita perlu kerap membelah rentetan berdasarkan berbilang pembatas, tentukan fungsi boleh guna semula. Fungsi
import re

def split_multiple(string, delimiters):
    pattern = &#39;|&#39;.join(map(re.escape, delimiters))

    return re.split(pattern, string)

my_str = &#39;fql,jiyik-dot:com&#39;

print(split_multiple(my_str, [&#39;,&#39;, &#39;-&#39;, &#39;:&#39;]))
Salin selepas log masuk

str.split() menerima rentetan dan senarai pembatas dan membahagi rentetan berdasarkan pembatas. Kaedah

digunakan untuk menyambungkan pembatas dengan paip

. Pembahagi.

# ????️ ,|-|:
print(&#39;|&#39;.join([&#39;,&#39;, &#39;-&#39;, &#39;:&#39;]))
Salin selepas log masuk

Ini akan mencipta corak ungkapan biasa yang boleh kita gunakan untuk memisahkan rentetan berdasarkan pembatas yang ditentukan.

Jika kita perlu membahagikan rentetan kepada senarai perkataan dengan berbilang pembatas, kita juga boleh menggunakan kaedah split_multiple.

Pisah rentetan kepada senarai perkataan menggunakan re.findall() str.join()|Gunakan kaedah

untuk memisahkan rentetan kepada senarai perkataan dengan berbilang pembatas. Kaedah

akan membelah rentetan setiap kali perkataan berlaku dan mengembalikan senarai yang mengandungi perkataan itu. Kaedah 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;]
Salin selepas log masuk

mengambil corak dan rentetan sebagai parameter dan mengembalikan senarai rentetan yang mengandungi semua kejadian tidak bertindih bagi corak dalam rentetan.

我们传递给 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;]
Salin selepas log masuk

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

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

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

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

Atas ialah kandungan terperinci Dalam Python, bagaimana untuk memisahkan rentetan yang mengandungi berbilang pembatas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan