Как я могу разобрать текст в Python? - PullRequest
0 голосов
/ 31 октября 2009

Образец текста:

SUBJECT = 'NETHERLANDS MUSIC EPA'
CONTENT = 'Michael Buble performs in Amsterdam Canadian singer Michael Buble performs during a concert in Amsterdam, The Netherlands, 30 October 2009. Buble released his new album entitled 'Crazy Love'. EPA/OLAF KRAAK '

Ожидаемый результат:

"
NETHERLANDS MUSIC EPA | 36 before
Michael Buble performs in Amsterdam Canadian singer Michael Buble performs during a concert in Amsterdam, The Netherlands, 30 October 2009. Buble released his new album entitled 'Crazy Love'. EPA/OLAF KRAAK
"

Как мне это сделать в Python?

Ответы [ 2 ]

1 голос
/ 31 октября 2009

Похоже, вы хотите что-то вроде ...:

import re

x = re.compile(r'^([^\|]*?)\s*\|[^\n]*\n\s*(.*?)\s*$')

s = """NETHERLANDS MUSIC EPA | 36 before
Michael Buble performs in Amsterdam Canadian singer Michael Buble performs during a concert in Amsterdam, The Netherlands, 30 October 2009. Buble released his new album entitled 'Crazy Love'. EPA/OLAF KRAAK"""

mo = x.match(s)

subject, content = mo.groups()

print 'SUBJECT =', repr(subject)
print 'CONTENT =', repr(content)

который излучает, как вам требуется,

SUBJECT = 'NETHERLANDS MUSIC EPA'
CONTENT = "Michael Buble performs in Amsterdam Canadian singer Michael Buble performs during a concert in Amsterdam, The Netherlands, 30 October 2009. Buble released his new album entitled 'Crazy Love'. EPA/OLAF KRAAK"

Или, может быть, вы хотите сделать наоборот (как предложено в комментарии)? тогда ключ RE может быть

y = re.compile(r'^.*SUBJECT\s*=\s*\'([^\']*)\'.*CONTENT\s*=\s*"([^"]*)"',
               re.DOTANY)

и вы можете использовать его аналогичным образом, чтобы получить совпадающий объект, извлечь тему и контент в виде групп и отформатировать их для отображения по вашему желанию.

В любом случае, возможно, вам понадобятся настройки - поскольку вы не указали точные спецификации, только один единственный пример, это трудно надежно обобщить.

0 голосов
/ 31 октября 2009

Вот простое решение. Я использую Python 3, но я думаю, что этот код будет идентичен в 2:

>>> import re
>>> pair = re.compile("SUBJECT = '([^\n]*)'\nCONTENT = '([^\n]*)'\n", re.MULTILINE)
>>> s = """SUBJECT = 'NETHERLANDS MUSIC EPA'
... CONTENT = 'Michael Buble performs in Amsterdam Canadian singer Michael Buble performs during a concert in Amsterdam, The Netherlands, 30 October 2009. Buble released his new album entitled 'Crazy Love'. EPA/OLAF KRAAK '
... """
>>> m = pair.match(s)
>>> m.group(1) + "\n" + m.group(2)
"NETHERLANDS MUSIC EPA\nMichael Buble performs in Amsterdam Canadian singer Michael Buble performs during a concert in Amsterdam, The Netherlands, 30 October 2009. Buble released his new album entitled 'Crazy Love'. EPA/OLAF KRAAK "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...