Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Dalam Python, bagaimana untuk memisahkan rentetan yang mengandungi berbilang pembatas?

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

WBOY
WBOYke hadapan
2023-05-09 19:25:062524semak imbas

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']

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']

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']

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']

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']

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']

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']

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

  • my_str = 'fql jiyik com'
    print(my_str.split())  # ????️ ['fql', 'jiyik', 'com']

    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 = '|'.join(map(re.escape, delimiters))

    return re.split(pattern, string)

my_str = 'fql,jiyik-dot:com'

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

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

digunakan untuk menyambungkan pembatas dengan paip

. Pembahagi.

# ????️ ,|-|:
print('|'.join([',', '-', ':']))

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 = 'fql jiyik, dot # com. abc'

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

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 = 'fql jiyik, dot # com. abc'

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

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

\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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam