Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: String (regex, find, replace) probleem in Python  (gelezen 1895 keer)

Offline BaukeP

  • Lid
String (regex, find, replace) probleem in Python
« Gepost op: 2014/11/02, 22:03:34 »
Hallo,

Ik heb het volgende probleem:
In een csv bestand bestaat het 7de veld uit (voorbeeld; 1 regel):
/TRTP/SEPA Incasso algemeen doorlopend/CSID/NL15ZZZ508845650000 /NAME/DE FRIESLAND ZORGVERZ/MARF/D902017365001/REMI/PREMIE ZORGVE RZEKERING 01-09-2014 - 01-10-2014

Ik wil hieruit (met Python) de volgende variabelen halen:
begunstigde: DE FRIESLAND ZORGVERZ
omschrijving: PREMIE ZORGVE RZEKERING 01-09-2014 - 01-10-2014
reknr: NL15ZZZ508845650000

Dus voor begunstigde de tekst na NAME/ tot aan de volgende /
en voor de rest iets soortgelijks. (CSID REMI)

Daarna (of gelijk) kan de inhoud van deze variabelen uit veld 7 verwijderd worden.

Wie kan me helpen met een slimme, snelle truc?

PS Veld 1 t/m 6 gaan prima, maar alleen de velden begunsigde en reknr bliven leeg. Dez staan namelijk verdekt opgesteld in het bewuste veld 7.

Alvast bedankt

Bauke

Offline Moob

  • Lid
Re: String (regex, find, replace) probleem in Python
« Reactie #1 Gepost op: 2014/11/02, 23:30:18 »
In AWK is dit een peuleschil, in python zou je kunnen kijken naar de str.split() functie

http://www.tutorialspoint.com/python/string_split.htm

Veld7 zie ik als /MARF maar dan neem ik dus de / als scheidings teken

Offline bram103

  • Lid
Re: String (regex, find, replace) probleem in Python
« Reactie #2 Gepost op: 2014/11/03, 20:46:41 »
Lijkt me typisch een probleem om met regex aan te pakken. Ik heb geen ervaring met Pyhon maar zag dat Python regex ook ondersteund. In https://docs.python.org/2/howto/regex.html#grouping staat ongeveer hoe je te werk moet gaan. Je hebt een pattern nodig wat er ongeveer uitziet als '/NAME/(.*)/'

Re: String (regex, find, replace) probleem in Python
« Reactie #3 Gepost op: 2014/11/04, 01:27:52 »
Er zijn inderdaad verschillende manieren om dit met regex op te lossen. Als de verschillende velden altijd in dezelfde volgorde staan zou het volgende moeten werken:

>>> import re
>>> s = "/TRTP/SEPA Incasso algemeen doorlopend/CSID/NL15ZZZ508845650000 /NAME/DE FRIESLAND ZORGVERZ/MARF/D902017365001/REMI/PREMIE ZORGVE RZEKERING 01-09-2014 - 01-10-2014"
>>> trtp, csid, name, marf, remi = re.split("/NAME/|/CSID/|/MARF/|/REMI/", s)
>>> print(name)
DE FRIESLAND ZORGVERZ
>>> print(remi)
PREMIE ZORGVE RZEKERING 01-09-2014 - 01-10-2014
>>> print(csid)
NL15ZZZ508845650000

Offline bram103

  • Lid
Re: String (regex, find, replace) probleem in Python
« Reactie #4 Gepost op: 2014/11/04, 19:57:17 »
Zoals ik al zei heb ik geen ervaring met Python en zou ik iets als onderstaand geprobeerd hebben. Ik weet niet zeker of dat het gewenste resultaat geeft (verder ook niet zo relevant).
>>> p = re.compile('/NAME/(.*)/')
>>> m = p.match('/TRTP/SEPA Incasso algemeen doorlopend/CSID/NL15ZZZ508845650000 /NAME/DE FRIESLAND ZORGVERZ/MARF/D902017365001/REMI/PREMIE ZORGVE RZEKERING 01-09-2014 - 01-10-2014')
>>> m.group(1)
DE FRIESLAND ZORGVERZ

Offline BaukeP

  • Lid
Re: String (regex, find, replace) probleem in Python
« Reactie #5 Gepost op: 2014/11/06, 13:46:30 »
Fantastisch! Bedankt voor jullie hulp.
Hier kan ik verder mee.

Vr. gr.

Bauke