2009-12-03 39 views
6

Tôi đã đọc tài liệu nhưng không hoàn toàn hiểu cách thực hiện.Làm thế nào để tách một chuỗi trong Python?

Tôi hiểu rằng tôi cần phải có một số loại định danh trong chuỗi sao cho các hàm có thể tìm thấy nơi để tách chuỗi (trừ khi tôi có thể nhắm mục tiêu không gian đầu tiên trong câu?).

Ví dụ: làm cách nào để chia tách: "Sico87 is an awful python developer" đến "Sico87""is an awful Python developer"?

Các chuỗi được lấy từ cơ sở dữ liệu (nếu điều này không quan trọng).

+1

phần bổ sung của bạn không phù hợp. Vui lòng đặt một câu hỏi mới. – SilentGhost

+1

Làm thế nào nó không thích hợp? Nó đã hỏi cùng một câu hỏi nhưng với các ví dụ mã? Nói về pedantic! – Udders

+2

Nó không phải là hàng rào.StackOverflow là hữu ích chính xác bởi vì các câu hỏi riêng biệt được tách ra, do đó, câu trả lời tốt cho câu hỏi chính xác này nổi lên hàng đầu. Sử dụng Python trong bất kỳ hệ thống templating nào bạn đang sử dụng đều rất trực giao với cách chia nhỏ một chuỗi. –

Trả lời

14

Sử dụng partition(' ') luôn trả về ba mục trong bộ - bit đầu tiên cho đến khi dấu phân tách, dấu tách và sau đó là các bit sau. Các slot trong tuple không được áp dụng vẫn ở đó, chỉ cần thiết lập là các chuỗi rỗng.

Ví dụ: "Sico87 is an awful python developer".partition(' ') lợi nhuận ["Sico87"," ","is an awful python developer"]

"Sico87 is an awful python developer".partition(' ')[0] lợi nhuận "Sico87"

Một thay thế, phức tạp hơn cách là sử dụng split(' ',1) mà làm việc similiarly nhưng trả về một biến số các mặt hàng. Nó sẽ trả về một tuple của một hoặc hai mục, mục đầu tiên là từ đầu tiên cho đến khi dấu tách và phần thứ hai là phần còn lại của chuỗi (nếu có).

+2

Sử dụng sai đối số 'maxsplit' – abyx

+1

thx abyx, đã xem và sửa nó trong khi bạn đang thêm nhận xét của mình :) – Will

+1

Tôi không biết nếu tôi nói chia nhỏ với maxsplit là phức tạp hơn, nó chỉ làm cho việc giải nén tuple không hoạt động. Tôi đang ở trong thỏa thuận mạnh mẽ với việc sử dụng phân vùng + tuple giải nén cho các trường hợp như thế này, mặc dù; nó ngắn gọn và nhất quán. –

19

Sử dụng phương pháp split trên dây:

>>> "Sico87 is an awful python developer".split(' ', 1) 
['Sico87', 'is an awful python developer'] 

Cách hoạt động:

  1. Mỗi chuỗi là một đối tượng. Đối tượng chuỗi có các phương thức nhất định được xác định trên chúng, chẳng hạn như split trong trường hợp này. Bạn gọi cho họ bằng cách sử dụng obj.<methodname>(<arguments>).
  2. Đối số đầu tiên cho split là ký tự phân cách các phần tử riêng lẻ. Trong trường hợp này là một không gian, ' '.
  3. Đối số thứ hai là số lần chia nhỏ sẽ được thực hiện. Trong trường hợp của bạn là 1. Rời ra số thứ hai này áp dụng chia càng nhiều càng tốt:

    >>> "Sico87 is an awful python developer".split(' ') 
    ['Sico87', 'is', 'an', 'awful', 'python', 'developer'] 
    

Tất nhiên bạn cũng có thể lưu trữ các chuỗi con trong các biến riêng biệt thay vì một danh sách:

>>> a, b = "Sico87 is an awful python developer".split(' ', 1) 
>>> a 
'Sico87' 
>>> b 
'is an awful python developer' 

Nhưng làm lưu ý rằng điều này sẽ gây rắc rối nếu một số đầu vào nhất định không chứa khoảng trắng:

>>> a, b = "string_without_spaces".split(' ', 1) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: need more than 1 value to unpack 
+0

Cảm ơn cách tốt đẹp để giải thích chức năng chia – user765443

Các vấn đề liên quan