Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

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

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

Offline BaukeP

  • Lid
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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/(.*)/'

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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