python replace/sub/wildcard/regex issue

Chris Rebert clp2 at rebertia.com
Mon Jan 18 23:40:46 EST 2010


On Mon, Jan 18, 2010 at 8:31 PM, Chris Rebert <clp2 at rebertia.com> wrote:
> On Mon, Jan 18, 2010 at 8:04 PM, tom <badouglas at gmail.com> wrote:
>> hi...
>>
>> trying to figure out how to solve what should be an easy python/regex/
>> wildcard/replace issue.
>>
>> i've tried a number of different approaches.. so i must be missing
>> something...
>>
>> my initial sample text are:
>>
>> Soo Choi</span>LONGEDITBOX">Apryl Berney
>> Soo Choi</span>LONGEDITBOX">Joel Franks
>> Joel Franks</span>GEDITBOX">Alexander Yamato
>>
>> and i'm trying to get
>>
>> Soo Choi foo Apryl Berney
>> Soo Choi foo Joel Franks
>> Joel Franks foo Alexander Yamato
>>
>> the issue i'm facing.. is how to start at "</" and end at '">' and
>> substitute inclusive of the stuff inside the regex...
>>
>> i've tried derivations of
>>
>> name=re.sub("</s[^>]*\">"," foo ",name)
>>
>> but i'm missing something...
>>
>> thoughts... thanks
>
> "Some people, when confronted with a problem, think 'I know, I'll use
> regular expressions.' Now they have two problems."
>
> Assuming your sample text is representative of all your test:
>
> new_text = "\n".join(line[:line.index('<')] + line[line.rindex('>')+1:] for line in your_text.split('\n'))

Erm, remembering to intersperse the "foo" (should be all 1-line, bloody Gmail):
new_text = "\n".join(line[:line.index('<')] + " foo " +
line[line.rindex('>')+1:] for line in your_text.split('\n'))

Or just use alex23's method, which seems all-round superior. :-)

Cheers,
Chris



More information about the Python-list mailing list