Bài viết này mô tả cách tách chuỗi bằng dấu phân cách, ngắt dòng, biểu thức chính quy và số lượng ký tự trong Python
- Chia theo dấu phân cách. print(s_comma.split(',', 2))
# ['one', 'two', 'three,four,five']
2
- Chỉ định dấu phân cách. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 3
- Chỉ định số lần chia tối đa. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 4
- Tách từ bên phải bởi dấu phân cách. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 5
- Chia theo ngắt dòng. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 6
- Chia theo regex. print(s_comma.split(',', 2))
# ['one', 'two', 'three,four,five']
7
- Chia theo nhiều dấu phân cách khác nhau
- Nối một danh sách các chuỗi
- Tách dựa trên số lượng ký tự. lát cắt
Xem bài viết sau để biết thêm thông tin về cách nối và trích xuất chuỗi
- Nối chuỗi trong Python (toán tử +, nối, v.v. )
- Trích xuất một chuỗi con từ một chuỗi trong Python (vị trí, biểu thức chính quy)
Liên kết được tài trợ
Chia theo dấu phân cách. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 2
Sử dụng phương pháp print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 2 để phân tách bằng dấu phân cách
Nếu đối số bị bỏ qua, nó sẽ bị phân chia bởi khoảng trắng, chẳng hạn như dấu cách, dòng mới s_lines = 'one\ntwo\nthree\nfour' print(s_lines) # one # two # three # four print(s_lines.split('\n', 1)) # ['one', 'two\nthree\nfour'] print(s_lines.split('\n', 1)[0]) # one print(s_lines.split('\n', 1)[1]) # two # three # four print(s_lines.split('\n', 1)[-1]) # two # three # four 0 và tab s_lines = 'one\ntwo\nthree\nfour' print(s_lines) # one # two # three # four print(s_lines.split('\n', 1)) # ['one', 'two\nthree\nfour'] print(s_lines.split('\n', 1)[0]) # one print(s_lines.split('\n', 1)[1]) # two # three # four print(s_lines.split('\n', 1)[-1]) # two # three # four 1. Khoảng trắng liên tiếp được xử lý cùng nhau
Một danh sách các từ được trả về
s_blank = 'one two three\nfour\tfive' print(s_blank) # one two three # four five print(s_blank.split()) # ['one', 'two', 'three', 'four', 'five'] print(type(s_blank.split())) # <class 'list'>
nguồn.
Sử dụng s_lines = 'one\ntwo\nthree\nfour' print(s_lines) # one # two # three # four print(s_lines.split('\n', 1)) # ['one', 'two\nthree\nfour'] print(s_lines.split('\n', 1)[0]) # one print(s_lines.split('\n', 1)[1]) # two # three # four print(s_lines.split('\n', 1)[-1]) # two # three # four 2, được mô tả bên dưới, để nối một danh sách thành một chuỗi
Chỉ định dấu phân cách. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 3
Chỉ định dấu phân cách cho tham số đầu tiên print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 3
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five']
nguồn.
Nếu bạn muốn chỉ định nhiều dấu phân cách, hãy sử dụng biểu thức chính quy như được mô tả sau
Chỉ định số lần chia tối đa. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 4
Chỉ định số lần phân tách tối đa cho tham số thứ hai print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 4
Nếu cho trước _______0_______4 thì nhiều nhất ________ 4 phép chia được thực hiện
print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five']
nguồn.
Ví dụ: rất hữu ích khi xóa dòng đầu tiên khỏi chuỗi
Nếu s_lines = 'one\ntwo\nthree\nfour' print(s_lines) # one # two # three # four print(s_lines.split('\n', 1)) # ['one', 'two\nthree\nfour'] print(s_lines.split('\n', 1)[0]) # one print(s_lines.split('\n', 1)[1]) # two # three # four print(s_lines.split('\n', 1)[-1]) # two # three # four 9, print(s_lines.split('\n', 2)[-1]) # three # four 0, bạn có thể nhận danh sách các chuỗi được phân chia theo ký tự xuống dòng đầu tiên s_lines = 'one\ntwo\nthree\nfour' print(s_lines) # one # two # three # four print(s_lines.split('\n', 1)) # ['one', 'two\nthree\nfour'] print(s_lines.split('\n', 1)[0]) # one print(s_lines.split('\n', 1)[1]) # two # three # four print(s_lines.split('\n', 1)[-1]) # two # three # four 0. Phần tử thứ hai print(s_lines.split('\n', 2)[-1]) # three # four 2 của danh sách này là một chuỗi không bao gồm dòng đầu tiên. Vì nó là phần tử cuối cùng nên nó có thể được chỉ định là print(s_lines.split('\n', 2)[-1]) # three # four 3
________số 8_______
nguồn.
Tương tự, để xóa hai dòng đầu tiên
print(s_lines.split('\n', 2)[-1]) # three # four
nguồn.
Tách từ bên phải bởi dấu phân cách. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 5
print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 5 tách từ bên phải của chuỗi
Kết quả chỉ khác với print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 2 khi tham số thứ hai print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 4 được đưa ra
Tương tự như print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 2, nếu bạn muốn xóa dòng cuối cùng, hãy sử dụng print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 5
print(s_lines.rsplit('\n', 1)) # ['one\ntwo\nthree', 'four'] print(s_lines.rsplit('\n', 1)[0]) # one # two # three print(s_lines.rsplit('\n', 1)[1]) # four
nguồn.
Để xóa hai dòng cuối cùng
print(s_lines.rsplit('\n', 2)[0]) # one # two
nguồn.
Chia theo ngắt dòng. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 6
Ngoài ra còn có một print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 6 để phân chia theo ranh giới đường
Như trong các ví dụ trước, print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 2 và print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 5 được phân chia theo mặc định với khoảng trắng bao gồm ngắt dòng và bạn cũng có thể chỉ định ngắt dòng với tham số print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 3
Tuy nhiên, thường tốt hơn là sử dụng print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 6
Ví dụ: chuỗi tách có chứa s_lines = 'one\ntwo\nthree\nfour' print(s_lines) # one # two # three # four print(s_lines.split('\n', 1)) # ['one', 'two\nthree\nfour'] print(s_lines.split('\n', 1)[0]) # one print(s_lines.split('\n', 1)[1]) # two # three # four print(s_lines.split('\n', 1)[-1]) # two # three # four 0 (LF, được sử dụng trong Hệ điều hành Unix bao gồm cả Mac) và print(s_lines.rsplit('\n', 1)) # ['one\ntwo\nthree', 'four'] print(s_lines.rsplit('\n', 1)[0]) # one # two # three print(s_lines.rsplit('\n', 1)[1]) # four 7 (CR + LF, được sử dụng trong Hệ điều hành Windows)
s_lines_multi = '1 one\n2 two\r\n3 three\n' print(s_lines_multi) # 1 one # 2 two # 3 three
nguồn.
Khi áp dụng print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 2, theo mặc định, nó được phân tách không chỉ bởi dấu ngắt dòng mà còn bởi dấu cách
print(s_lines_multi.split()) # ['1', 'one', '2', 'two', '3', 'three']
nguồn.
Vì chỉ có một ký tự xuống dòng có thể được chỉ định trong print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 3, nó không thể được phân tách nếu có các ký tự xuống dòng hỗn hợp. Nó cũng được chia ở cuối ký tự xuống dòng
print(s_lines_multi.split('\n')) # ['1 one', '2 two\r', '3 three', '']
nguồn.
print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 6 phân tách ở các ký tự dòng mới khác nhau nhưng không phân tách ở các khoảng trắng khác
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 0
nguồn.
Nếu đối số đầu tiên, print(s_lines.rsplit('\n', 2)[0]) # one # two 1, được đặt thành print(s_lines.rsplit('\n', 2)[0]) # one # two 2, thì kết quả sẽ bao gồm một ký tự xuống dòng ở cuối dòng
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 1
nguồn.
Xem bài viết sau để biết các thao tác khác với ngắt dòng
- Xử lý ngắt dòng (dòng mới) trong Python
Liên kết được tài trợ
Chia theo regex. print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 7
print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 2 và print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 5 chỉ tách ra khi print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 3 khớp hoàn toàn
Nếu bạn muốn tách một chuỗi khớp với biểu thức chính quy (regex) thay vì khớp hoàn hảo, hãy sử dụng print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 2 của mô-đun re
Trong print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 7, chỉ định mẫu biểu thức chính quy trong tham số đầu tiên và chuỗi ký tự đích trong tham số thứ hai
Một ví dụ về chia cho các số liên tiếp như sau
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 2
nguồn.
Số lượng phân tách tối đa có thể được chỉ định trong tham số thứ ba, print(s_comma.split(',', 2)) # ['one', 'two', 'three,four,five'] 4
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 3
nguồn.
Chia theo nhiều dấu phân cách khác nhau
Hai điều sau đây rất hữu ích để ghi nhớ ngay cả khi bạn không quen thuộc với biểu thức chính quy
Đính kèm một chuỗi với s_lines_multi = '1 one\n2 two\r\n3 three\n' print(s_lines_multi) # 1 one # 2 two # 3 three 0 để khớp với bất kỳ ký tự đơn nào trong đó. Bạn có thể tách chuỗi theo nhiều ký tự khác nhau
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 4
nguồn.
Nếu các mẫu được phân định bởi s_lines_multi = '1 one\n2 two\r\n3 three\n' print(s_lines_multi) # 1 one # 2 two # 3 three 1, nó sẽ khớp với bất kỳ mẫu nào. Tất nhiên, có thể sử dụng các ký tự đặc biệt của biểu thức chính quy cho mỗi mẫu, nhưng cũng không sao ngay cả khi chuỗi bình thường được chỉ định như vậy. Bạn có thể chia theo nhiều chuỗi khác nhau
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 5
nguồn.
Nối một danh sách các chuỗi
Trong các ví dụ trước, bạn có thể tách chuỗi và lấy danh sách
Nếu bạn muốn nối một danh sách các chuỗi thành một chuỗi, hãy sử dụng phương thức chuỗi, s_lines = 'one\ntwo\nthree\nfour' print(s_lines) # one # two # three # four print(s_lines.split('\n', 1)) # ['one', 'two\nthree\nfour'] print(s_lines.split('\n', 1)[0]) # one print(s_lines.split('\n', 1)[1]) # two # three # four print(s_lines.split('\n', 1)[-1]) # two # three # four 2
Gọi s_lines = 'one\ntwo\nthree\nfour' print(s_lines) # one # two # three # four print(s_lines.split('\n', 1)) # ['one', 'two\nthree\nfour'] print(s_lines.split('\n', 1)[0]) # one print(s_lines.split('\n', 1)[1]) # two # three # four print(s_lines.split('\n', 1)[-1]) # two # three # four 2 từ s_lines_multi = '1 one\n2 two\r\n3 three\n' print(s_lines_multi) # 1 one # 2 two # 3 three 4 và chuyển danh sách các chuỗi sẽ được nối với đối số
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 6
nguồn.
Xem bài viết sau để biết chi tiết về nối chuỗi
- Nối chuỗi trong Python (toán tử +, nối, v.v. )
Tách dựa trên số lượng ký tự. lát cắt
Sử dụng slice để tách chuỗi dựa trên số lượng ký tự
- Cách cắt danh sách, chuỗi, tuple trong Python
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 7
nguồn.
Nó có thể được lấy dưới dạng một bộ hoặc được gán cho một biến tương ứng
- Nhiều bài tập trong Python. Gán nhiều giá trị hoặc cùng một giá trị cho nhiều biến
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 8
nguồn.
Chia thành ba
s_comma = 'one,two,three,four,five' print(s_comma.split(',')) # ['one', 'two', 'three', 'four', 'five'] print(s_comma.split('three')) # ['one,two,', ',four,five'] 9
nguồn.
Số lượng ký tự có thể được lấy bằng chức năng tích hợp sẵn s_lines_multi = '1 one\n2 two\r\n3 three\n' print(s_lines_multi) # 1 one # 2 two # 3 three 5. Nó cũng có thể được chia thành hai nửa bằng cách sử dụng này