* Schif Schaf:
Hi,

I've got some text that looks like this:


    Lorem [ipsum] dolor sit amet, consectetur
    adipisicing elit, sed do eiusmod tempor
    incididunt ut [labore] et [dolore] magna aliqua.

and I want to make it look like this:


    Lorem {ipsum} dolor sit amet, consectetur
    adipisicing elit, sed do eiusmod tempor
    incididunt ut {labore} et {dolore} magna aliqua.

(brackets replaced by braces). I can do that with Perl pretty easily:

~~~~
for (<>) {
    s/\[(.+?)\]/\{$1\}/g;
    print;
}
~~~~

but am not able to figure out how to do it with Python. I start out
trying something like:

~~~~
import re, sys
withbracks = re.compile(r'\[(.+?)\]')
for line in sys.stdin:
    mat = withbracks.search(line)
    if mat:
        # Well, this line has at least one.
        # Should be able to use withbracks.sub()
        # and mat.group() maybe ... ?
        line = withbracks.sub('{' + mat.group(0) + '}', line)
        # No, that's not working right.

    sys.stdout.write(line)
~~~~

but then am not sure where to go with that.

How would you do it?

I haven't used regexps in Python before, but what I did was (1) look in the documentation, (2) check that it worked.


<code>
import re

text = (
    "Lorem [ipsum] dolor sit amet, consectetur",
    "adipisicing elit, sed do eiusmod tempor",
    "incididunt ut [labore] et [dolore] magna aliqua."
    )

withbracks = re.compile( r'\[(.+?)\]' )
for line in text:
    print( re.sub( withbracks, r'{\1}', line) )
</code>


Python's equivalent of the Perl snippet seems to be the same number of lines, and more clear. :-)


Cheers & hth.,

- Alf
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to