Есть ли какие-либо встроенные прототипы python для достижения следующего? Кто-нибудь может предложить, как это можно сделать ...

Я пытаюсь получить все данные в [ ] и разделить на основе \s+ для строк, которые начинаются с | между блоком |- и |- или }

   {| border="1" cellspacing="1" cellpadding="1"
    |-
    Ignore block
    |-
    | [http://data/code SEC.12.0]
    | [file://data\\loc \\DATA\LOC]<br>
    |
    [file://\\ftp\\location \\ftp\\location] <br> <br> &

    |-
    | [http://data/code2 SEC.13.0]
    | [file://data\\loc2 \\DATA\LOC2]<br>]
    |
    [file://\\ftp\\location2 \\ftp\\location2] <br> <br> &
    |
    }

ОЖИДАЕМЫЙ ВЫХОД: -

SEC.12.0
\\DATA\LOC
\\ftp\\location


SEC.13.0
\\DATA\LOC2
\\ftp\\location2
0
carte blanche 25 Мар 2013 в 01:48
Насколько реально экранирование HTML - откуда эти данные? Похоже на искореженную викиразметку
 – 
Eric
25 Мар 2013 в 01:54
- текст взят из вики, но код выглядит точно так же
 – 
carte blanche
25 Мар 2013 в 01:56
Мне трудно поверить, что вики есть символы ". Вы здесь неправильно просматриваете страницу.
 – 
Eric
25 Мар 2013 в 02:09
- мы можем игнорировать это сейчас. нам не нужно разбирать это ... нужно анализировать только данные между | - и | - или}
 – 
carte blanche
25 Мар 2013 в 02:13

1 ответ

Лучший ответ

Например:

import re

data = []

for block in re.findall(r'(?s)\|-(.+?)(?=\|-|})', text):
    r = [x.split()[-1] for x in re.findall(r'\[(.+?)\]', block)]
    if r:
        data.append(r)

print data

Результат:

[['SEC.12.0', '\\DATA\\LOC', '\\ftp\\location'], ['SEC.13.0', '\\DATA\\LOC2', '\\ftp\\location2']]
1
georg 25 Мар 2013 в 03:33