Розділіть рядок відмежувачем у python


195

Як розділити цей рядок, де __знаходиться роздільник

MATCHES__STRING

Щоб отримати вихід ['MATCHES', 'STRING']?



8
Варто прочитати стандартні документи python і намагатися зрозуміти кілька програм, які були зроблені іншими, щоб почати розуміти основи Python. Практика та копіювання / модифікація - чудові інструменти для вивчення мови.
Tony Veijalainen

Відповіді:


327

Ви можете використовувати str.splitфункцію:string.split('__')

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

1
Мені було цікаво, яка різниця між першим прикладом (просто використовуючи split ()) та другим прикладом (з циклом for)?
EndenDragon

4
@EndenDragon Цикл for автоматично застосовується x.strip()та повертає список збігів без пробілів з обох сторін. Чорт у деталях.
Sébastien Vercammen

Гей, оскільки це дуже популярне питання, я відредагував його, щоб задати лише 1 конкретне запитання, і видалив частину з пробілами навколо роздільника, оскільки не було зрозуміло, що ОП навіть очікувало, що це станеться (Оскільки ніколи не було питання в питання). Я думаю, що питання (і відповіді) є більш корисними таким чином, але не соромтеся відкатати всі зміни, якщо ви не погоджуєтесь.
Аран-Фей

4

Можливо, вас зацікавить csvмодуль, призначений для файлів, розділених комами, але його можна легко змінити, щоб використовувати спеціальний роздільник.

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

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

1

Якщо у вас є два або більше (у прикладі нижче - три) елементи в рядку, ви можете використовувати кому для розділення цих елементів:

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

Після цього рядка коду три змінні матимуть значення з трьох частин змінної ev

Отже, якщо змінна ev містить цей рядок, і ми застосовуємо роздільник '@':

Sa., 23. Мерц @ 19: 00 @ Klavier + Orchester: SPEZIAL

Потім, після розділеної операції змінна

  • дата матиме значення "Sa., 23. März"
  • час матиме значення "19:00"
  • ім'я події матиме значення "Klavier + Orchester: SPEZIAL"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.