Hàm split[] trong Python chia chuỗi theo delimeter đã cho [là space nếu không được cung cấp] và trả về danh sách các chuỗi con; nếu bạn cung cấp đối số num thì chia chuỗi thành num + 1 chuỗi con. split[] trong Python chia chuỗi theo delimeter đã cho [là space nếu không được cung cấp] và trả về danh sách các chuỗi con; nếu bạn cung cấp đối số num thì chia chuỗi thành num + 1 chuỗi con. Cú pháp của split[] trong Python:split[] trong Python: Chi tiết về tham số: str: Đây là bất kỳ phân chia chuỗi - delimeter nào, mặc định là khoảng trống.: Đây là bất kỳ phân chia chuỗi - delimeter nào, mặc định là khoảng trống. num: Số chuỗi con num + 1 được tạo ra.: Số chuỗi con num + 1 được tạo
ra. Ví dụ sau minh họa cách sử dụng của split[] trong Python. Chạy chương trình Python trên sẽ cho kết quả: Hàm split[] trong Python chia chuỗi theo delimeter đã cho [là space nếu không được cung cấp] và trả về danh sách các chuỗi con; nếu bạn cung cấp đối số num thì chia chuỗi thành num + 1 chuỗi con. split[] trong Python chia chuỗi theo delimeter đã cho [là space nếu không được cung cấp] và trả về danh sách các chuỗi con; nếu bạn cung cấp đối số num thì chia chuỗi thành num + 1 chuỗi con. Cú pháp của split[] trong Python:split[] trong Python: Chi tiết về tham số: str: Đây là bất kỳ phân chia chuỗi - delimeter nào, mặc định là khoảng trống.: Đây là bất kỳ phân chia chuỗi - delimeter nào, mặc định là khoảng trống. num: Số chuỗi con num + 1 được tạo ra.: Số chuỗi con num + 1 được tạo ra. Ví dụ sau minh họa cách sử dụng của split[] trong Python. Chạy chương trình Python trên sẽ cho kết quả: Hàm split[] trong Python chia chuỗi theo delimeter đã cho [là space nếu không được cung cấp] và trả về danh sách các chuỗi con; nếu bạn cung cấp đối số num thì chia chuỗi thành num + 1 chuỗi con. split[] trong Python chia chuỗi theo delimeter đã cho [là space nếu không được cung cấp] và trả về danh sách các chuỗi con; nếu bạn cung
cấp đối số num thì chia chuỗi thành num + 1 chuỗi con. Cú pháp
str.split[str="", num=string.count[str]]
str1 = "Line1-Python Line2-Java Line3-PHP";
print["Test 1:"];
arr1 = str1.split[];
for arr in arr1:
print [arr];
print["\nTest 2:"];
arr1 = str1.split[' ', 1];
for arr in arr1:
print [arr];
Test 1:
Line1-Python
Line2-Java
Line3-PHP
Test 2:
Line1-Python
Line2-Java Line3-PHP
Cú pháp
str.split[str="", num=string.count[str]]
str1 = "Line1-Python Line2-Java Line3-PHP";
print["Test 1:"];
arr1 = str1.split[];
for arr in arr1:
print [arr];
print["\nTest 2:"];
arr1 = str1.split[' ', 1];
for arr in arr1:
print [arr];
Test 1:
Line1-Python
Line2-Java
Line3-PHP
Test 2:
Line1-Python
Line2-Java Line3-PHP
Cú pháp
Cú pháp của split[] trong Python:split[] trong Python:
str.split[str="", num=string.count[str]]
Chi tiết về tham số:
str: Đây là bất kỳ phân chia chuỗi - delimeter nào, mặc định là khoảng trống.: Đây là bất kỳ phân chia chuỗi - delimeter nào, mặc định là khoảng trống.
num: Số chuỗi con num + 1 được tạo ra.: Số chuỗi con num + 1 được tạo ra.
Ví dụ sau minh họa cách sử dụng của split[] trong Python.
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];
Chạy chương trình Python trên sẽ cho kết quả:
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP
Hàm split[] trong Python chia chuỗi theo delimeter đã cho [là space nếu không được cung cấp] và trả về danh sách các chuỗi con; nếu bạn cung cấp đối số num thì chia chuỗi thành num + 1 chuỗi con. split[] trong Python chia chuỗi theo delimeter đã cho [là space nếu không được cung cấp] và trả về danh sách các chuỗi con; nếu bạn cung cấp đối số num thì chia chuỗi thành num + 1 chuỗi con.
Cú pháp
Cú pháp của split[] trong Python:split[] trong Python:
str.split[str="", num=string.count[str]]
Chi tiết về tham số:
str: Đây là bất kỳ phân chia chuỗi - delimeter nào, mặc định là khoảng trống.: Đây là bất kỳ phân chia chuỗi - delimeter nào, mặc định là khoảng trống.
num: Số chuỗi con num + 1 được tạo ra.: Số chuỗi con num + 1 được tạo ra.
Ví dụ sau minh họa cách sử dụng của split[] trong Python.
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];
Chạy chương trình Python trên sẽ cho kết quả:
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP
Có rất nhiều vấn đề trong cuộc sống mưu sinh và lập trình viên cũng không ngoại lệ, chúng ta cần phải đối mặt với string. String có thể đến rất nhiều dạng. Chúng có thể là text không có cấu trúc [unstructured text], username, mô tả sản phẩm, tên cột CSDL và những thứ khác mà chúng ta có thể mô tả bằng ngôn ngữ.
Với sự hiện diện gần như ở khắp mọi nơi của string, việc làm chủ các thao tác với string là tối quan trọng. May thay, Python đã làm cho việc thao tác với string trở nên đơn giản, đặc biệt là khi so sánh với các ngôn ngữ khác và thậm chí là với các phiên bản cũ của Python.
Trong bài viết này, bạn sẽ tìm hiểu một thao tác cơ bản nhất với string: split, concatenate và join. Bạn không những tìm hiểu cách sử dụng những công cụ này mà còn cả cái nhìn sâu rộng về cách thức hoạt động đằng sau chúng.
Splitting Strings
Trong Python, string được biểu diễn bởi các đối tượng
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP3. String có tính bất biến [immutable]: điều này có nghĩa là đối tượng được lưu trong bộ nhớ không thể bị thay đổi. Hai sự thật này có thể giúp bạn tìm hiểu [và sau đó là nhớ] cách sử dụng
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4.bất biến [immutable]: điều này có nghĩa là đối tượng được lưu trong bộ nhớ không thể bị thay đổi. Hai sự thật này có thể giúp bạn tìm hiểu [và sau đó là nhớ] cách sử dụng
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4.
Bạn đã đoán được hai đặc tính của string liên quan thế nào đến tính năng split trong Python chưa? Nếu bạn đoán
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4 là một instance method bởi vì string là một kiểu đặc biệt, có thể bạn đúng! Ở một số ngôn ngữ khác [như Perl], string là đầu vào của hàm
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4 thay vì một method gọi bởi chính string đó.
Note: Ways to Call String Methods
Các method như
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4 được trình bày ở đây chủ yếu như là các instance method. Chúng có thể được gọi như các static method nhưng điều này thực sự không lý tưởng. Ví dụ:str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];2Cái này trông kềnh càng và khó sử dụng so với cách thông thường:
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];3Để tìm hiểu thêm về instance, class và static method trong Python, vui lòng bấm vào đây.
Còn đặc tính bất biến của string thì sao? Điều này nhắc nhở bạn rằng là các method của string không phải là các thao tác in-place [in-place operation], mà chúng trả về một đối tượng mới trong bộ nhớ.thao tác in-place [in-place operation], mà chúng trả về một đối tượng mới trong bộ nhớ.
Note: In-Place Operations
Các thao tác in-place là các thao tác trực tiếp thay đổi đối tượng được gọi. Một ví dụng phổ biến là method
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP8 được sử dụng với list: Khi bạn gọiTest 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP8 với một list, list đó sẽ bị thay đổi trực tiếp bằng cách thêm một list khác vào.
Splitting Without Parameters
Trước khi tìm hiểu sâu hơn, hãy cùng xét ví dụ sau:
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];4
Đây là một trường hợp đặc biệt của
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4. Khi không truyền vào separator,
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4 sẽ coi khoảng trắng [whitespace] là separator.
Một đặc điểm khác của việc gọi
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4 mà không truyền tham số chính là nó sẽ tự động bỏ đi các khoảng trắng ở đầu và cuối cũng như là các khoảng trắng liên tiếp. Hãy so sánh việc gọi
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4 trong hai trường hợp có separator và không có separator:
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];5
Điều đầu tiên cần chú ý chính là tính bất biến của string trong Python. Có thể thấy là giá trị của string
str.split[str="", num=string.count[str]]4 không hề bị thay đổi.
Điều thứ hai chính là việc gọi hàm
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4 mà không có tham số sẽ trích xuất ra các từ trong câu và loại bỏ các khoảng trắng.
Specifying Separators
Mặt khác,
str.split[str="", num=string.count[str]]6 tầm thường hơn rất nhiều. Khi có các khoảng trắng ở đầu hoặc ở cuối, bạn sẽ nhận được các string rỗng - bạn có thể thấy chúng ở phần tử đầu tiên và cuối cùng của list trả về.
Còn khi có nhiều separator liên tiếp [ví dụ như giữa "this" với "is" và giữa "is" với "my"], ký tự đầu tiên sẽ được coi như là separator, các ký tự tiếp theo sẽ được trả về là string rỗng.
Note: Separators in Calls to
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4Khi sử dụng khoảng trắng đơn [single space character] làm separator, bạn không bị giới hạn bởi kiểu ký tự hay chiều dài string mà bạn dùng để làm separator. Yêu cầu duy nhất chính là separator phải là string.
Limiting Splits With Maxsplit
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4 có một tham số không bắt buộc là
str.split[str="", num=string.count[str]]9. Mặc định,
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4 sẽ tạo ra tối đa lượng phân đoạn. Tuy nhiên khi bạn truyền giá trị cho
str.split[str="", num=string.count[str]]9, số phân đoạn tối đa chính bằng giá trị này:
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];6
Concatenating and Joining Strings
Một phép toán cơ bản khác là nối string.
Concatenating With the + Operator
Có vài cách để thực hiện điều này, tùy vào những thứ mà bạn muốn nhận được. Cách đơn giản và phổ biến nhất chính là sử dụng toán tử
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];2 để nối các string với nhau:
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];7
Tiếp tục, về mặt toán học, bạn có thể nhân một string để lặp lại nó:
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];8
Hãy nhớ rằng: string có tính bất biến! Nếu bạn nối hoặc nhân một string được lưu bởi một biến, bạn phải gán chuỗi mới cho một biến khác để lưu nó.
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];9
Một chú ý khác chính là việc Python không hỗ trợ ép kiểu ẩn đối với string:
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP0
Đây là một điều mới mẻ nếu bạn mới nhảy sang Python từ một ngôn ngữ kiểu JavaScript.
Concatenating With str1 = "Line1-Python Line2-Java Line3-PHP";
print["Test 1:"];
arr1 = str1.split[];
for arr in arr1:
print [arr];
print["\nTest 2:"];
arr1 = str1.split[' ', 1];
for arr in arr1:
print [arr];
3
Một cách khác, mạnh mẽ hơn để nối các string: method
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];3.
Trường hợp phổ biến chính là khi bạn có một iterable - ví dụ một list - gồm các string và bạn muốn kết hợp các string đó thành một string đơn. Tương tự
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP4,
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];3 là một instance method của string:
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP1
Ở đây, chúng ta nối mỗi phần tử của
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];7 bởi một dấu phẩy [
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];8 - joiner].
str1 = "Line1-Python Line2-Java Line3-PHP"; print["Test 1:"]; arr1 = str1.split[]; for arr in arr1: print [arr]; print["\nTest 2:"]; arr1 = str1.split[' ', 1]; for arr in arr1: print [arr];3 thông minh ở chỗ nó thêm joiner vào giữa các string trong iterable mà bạn muốn nối, thay vì thêm joiner và cuối mỗi string. Điều này có nghĩa là nếu iterable có size là
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP0, bạn sẽ không thấy joiner:
Test 1: Line1-Python Line2-Java Line3-PHP Test 2: Line1-Python Line2-Java Line3-PHP2
Nguồn: //realpython.com/python-string-split-concatenate-join/