On 27.Jun 2003 - 01:53:27, Steffen Hausmann wrote:
On Fri, Jun 27, 2003 at 01:09:27AM +0200, Andreas Pakulat wrote:
I wanted to know if the above can be done? What I need is a function that replaces every character of a string, that is not in [a-zA-Z1-9] with an underscore. I want to use this to automatically create an Object-Id from a title, to create a new Object.
If this is not possible directly within a Script(Python), can it be done using an ExternalMethod? I suppose yes.
In order to use regular expressions in python you need to 'import re'.
After that you can use 'sub(pattern, repl, string[, count])' to substitue a string.
For more information on regexps in python take a look at http://www.python.org/doc/current/lib/node99.html#l2h-732
The problem is that import re leads to an BasiAuth Dialog, which cannot be fulfilled. I mean, I'm already logged in to the ZMI but do get a BasicAuth Dialog if I execute the script that tries to import re. I think that regexp's are not completely included in Zope - I looked at some parts of the python-code and did not find the sub-function at the point where all the other re-functions are mad "safe". I have a workaround that iterates over the string as list and changes everything that is not alphanumeric into '_'. As the strings I replace won't get very long (max 100 chars) this should be fast enough. I also tried the external method, but I think I did something wrong, the following returns the unchanged string: re.sub('[^a-zA-Z0-9]','WS/04','_') Andreas -- "Life, loathe it or ignore it, you can't like it." -- Marvin, "Hitchhiker's Guide to the Galaxy"