2016-11-02 2 views
1

Lassen Sie uns sagen, wir haben Text, in dem Spaltenkopf gespeichert sind, in Form zu extrahieren:Wie Spaltendaten aus einem Text in Python (reguläre Ausdrücke)

{| 
|+ The table's caption 
! scope="col" width="20"style="background-color:#cfcfcf;"align="center" | Column header 1 
! scope="col" width="20"style="background-color:#ff55ff;"align="center" | Column header 2 
! scope="col" | Column header 3 
|- 
! scope="row" | Row header 1 
| Cell 2 || Cell 3 
|- 
! scope="row" | Row header A 
| Cell B 
| Cell C 
|} 

Wie kann ich alle Spalten ([Spaltenüberschrift extrahieren 1, Spaltenkopf 2, Spaltenkopf 3]) aus dem Text in Python?

re.findall('*! scope="col" |', text, re.IGNORECASE) 

Aber es macht nicht den Job.

https://regex101.com/r/PLKREz/6

Wie kann ich es in Python zu tun?

+0

Sind Sie diese aus dem Internet Schaben, oder ist dieser Text Ihnen gegeben benutzen? –

+0

@Wintro das ist aus den Wikipedia-Artikeln und meine Aufgabe ist es, die Spalten aus den Tabellen zu extrahieren ... –

Antwort

0

Sie können alle Teil nach dem letzten | in einer Linie mit scope="col" finden:

import re 

data = """ 
{| 
|+ The table's caption 
! scope="col" width="20"style="background-color:#cfcfcf;"align="center" | Column header 1 
! scope="col" width="20"style="background-color:#ff55ff;"align="center" | Column header 2 
! scope="col" | Column header 3 
|- 
! scope="row" | Row header 1 
| Cell 2 || Cell 3 
|- 
! scope="row" | Row header A 
| Cell B 
| Cell C 
|}""" 

print(re.findall(r'scope="col".*?\| ([^|]+)$', data, re.MULTILINE)) 

Drucke:

['Column header 1', 'Column header 2', 'Column header 3']