Rumah > Artikel > pembangunan bahagian belakang > Dalam Python, bagaimana untuk memisahkan rentetan yang mengandungi berbilang pembatas?
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.
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']
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.
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()
.
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. Fungsiimport 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
# ????️ ,|-|: 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
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']
我们传递给 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!