Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python – Phân tách phần tử theo dấu phân cách (Delimiter)

Khi cần tách các phần tử trong list theo dấu phân cách (delimiter), ta dùng split() và list comprehension.

Ví dụ

my_list = ["89@21", "58@51", "19@61", "11@10", "32@65", "34@45", "87@90", "32@21", '1@345']
print("Danh sách gốc:")
print(my_list)

print("Sau sắp xếp:")
my_list.sort()
print(my_list)

my_delimiter = "@"
print("Dấu phân cách:", my_delimiter)

result_before_delim = [ele.split(my_delimiter)[0] for ele in my_list]
result_after_delim = [ele.split(my_delimiter)[1] for ele in my_list]

print("Phần trước delimiter:")
print(result_before_delim)
print("Phần sau delimiter:")
print(result_after_delim)

Kết quả đầu ra

Danh sách gốc:
['89@21', '58@51', '19@61', '11@10', '32@65', '34@45', '87@90', '32@21', '1@345']
Sau sắp xếp:
['11@10', '19@61', '1@345', '32@21', '32@65', '34@45', '58@51', '87@90', '89@21']
Dấu phân cách: @
Phần trước delimiter:
['11', '19', '1', '32', '32', '34', '58', '87', '89']
Phần sau delimiter:
['10', '61', '345', '21', '65', '45', '51', '90', '21']

Giải thích

  • ele.split('@') tách chuỗi thành list: ['89', '21'].
  • [0] lấy phần trước, [1] lấy phần sau.
  • Kết quả là list string, có thể chuyển int: int(ele.split('@')[0]).

Cách hiệu quả hơn (split 1 lần):

parts = [ele.split('@') for ele in my_list]
before = [p[0] for p in parts]
after = [p[1] for p in parts]