Tách một chuỗi bởi một dấu phân cách trong python


195

Làm thế nào để tách chuỗi này ở đâu __là dấu phân cách

MATCHES__STRING

Để có được một đầu ra của ['MATCHES', 'STRING']?



8
Thật đáng để đọc các tài liệu tiêu chuẩn python và cố gắng hiểu một vài chương trình mà những người khác đã thực hiện để bắt đầu nắm bắt những điều cơ bản về Python. Thực hành và sao chép / sửa đổi là những công cụ tuyệt vời để học ngôn ngữ.
Tony Veijalainen

Câu trả lời:


327

Bạn có thể sử dụng str.splitchức năng:string.split('__')

>>> "MATCHES__STRING".split("__")
['MATCHES', 'STRING']

1
Tôi đã tự hỏi, sự khác biệt giữa ví dụ đầu tiên (đơn giản là sử dụng split ()) và ví dụ thứ hai (với một vòng lặp for) là gì?
EndenDragon

4
@EndenDragon Vòng lặp for sẽ tự động áp dụng x.strip()và trả về danh sách các trận đấu mà không có khoảng trắng ở hai bên. Ma quỷ là trong các chi tiết.
Sébastien Vercammen

Này, vì đây là một câu hỏi rất phổ biến, tôi đã chỉnh sửa nó để chỉ hỏi 1 câu hỏi cụ thể và xóa phần có khoảng trắng xung quanh dấu phân cách vì không rõ OP thậm chí sẽ xảy ra điều gì (Vì không bao giờ có câu hỏi nào trong câu hỏi). Tôi nghĩ rằng câu hỏi (và câu trả lời) hữu ích hơn theo cách này, nhưng hãy thoải mái quay lại tất cả các chỉnh sửa nếu bạn không đồng ý.
Aran-Fey

4

Bạn có thể quan tâm đến csvmô-đun, được thiết kế cho các tệp được phân tách bằng dấu phẩy nhưng có thể dễ dàng sửa đổi để sử dụng một dấu phân cách tùy chỉnh.

import csv
csv.register_dialect( "myDialect", delimiter = "__", <other-options> )
lines = [ "MATCHES__STRING" ]

for row in csv.reader( lines ):
    ...

1

Khi bạn có hai hoặc nhiều hơn (trong ví dụ bên dưới có ba) phần tử trong chuỗi, thì bạn có thể sử dụng dấu phẩy để phân tách các mục này:

date, time, event_name = ev.get_text(separator='@').split("@")

Sau dòng mã này, ba biến sẽ có các giá trị từ ba phần của biến ev

Vì vậy, nếu biến ev chứa chuỗi này và chúng tôi áp dụng dấu phân cách '@':

Sa., 23. März @ 19: 00 @ Klavier + Orchester: TỐC ĐỘ

Sau đó, sau khi tách hoạt động biến

  • ngày sẽ có giá trị "Sa., 23. März"
  • thời gian sẽ có giá trị "19:00"
  • event_name sẽ có giá trị "Klavier + Orchester: SPEZIAL"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.