Better one;
import re
feedstr = '2014-06-17 13:55:14: IncomingData: TMSUpdateCallback: {
SourceID=JP000456712 Ric=0388.HK BuyQty=3800.0 TradeTime="2014-06-17
13:54:19" DestID="" ExchangeTransCode="65725497 89897456 523 1"
Account="PTBHK01" }';
start = feedstr.find('{');
s = feedstr[start+1:]
def spaceinquotes(match):
return match.replace(' ', '_')
for quotes in re.findall('"[^"]*"', s):
s = s.replace(quotes, quotes.replace(' ', '_'))
d = []
for pairs in s.split(" "):
if pairs.find('=') != -1:
k,v= pairs.split('=')
v=v.replace('_', ' ')
v=v.replace('"', '')
d.append({k:v})
print d
On Wed, Jun 18, 2014 at 11:19 AM, Girish Venkatachalam
<[email protected]> wrote:
> import re
>
> feedstr = '2014-06-17 13:55:14: IncomingData: TMSUpdateCallback: {
> SourceID=JP000456712 Ric=0388.HK BuyQty=3800.0 TradeTime="2014-06-17
> 13:54:19" DestID="" ExchangeTransCode="65725497 89897456 523 1"
> Account="PTBHK01" }';
>
> start = feedstr.find('{');
>
> s = feedstr[start+1:]
>
> def spaceinquotes(match):
> return match.replace(' ', '_')
>
> for quotes in re.findall('"[^"]*"', s):
> s = s.replace(quotes, quotes.replace(' ', '_'))
>
> d = []
> for pairs in s.split(" "):
> if pairs.find('=') != -1:
> k,v= pairs.split('=')
> d.append({k:v})
>
> print d
>
>
> On Tue, Jun 17, 2014 at 9:57 PM, Mohan R <[email protected]> wrote:
>> Hello Regex Gurus,
>>
>> I need help handling this particular situation
>>
>> In a log file, I have a line like this,
>>
>> 2014-06-17 13:55:14: IncomingData: TMSUpdateCallback:
>> { SourceID=JP000456712 Ric=0388.HK BuyQty=3800.0 TradeTime="2014-06-17
>> 13:54:19" DestID="" ExchangeTransCode="65725497 89897456 523 1"
>> Account="PTBHK01" }
>>
>> I have to make a dictionary out of this line using the key=value pair
>> strings between {} parenthesis. I can take out the inner string using
>> the following code,
>>
>> re.search('^.*{ (.*) }.*$', line).groups()[0]
>>
>> But, after this, I'm looking for a way to split the string using '
>> '(space), but the values also contains ' '(space) in between. I have to
>> replace the space in the values and split the string using ' '(space).
>> Is there any way in regex to capture only the values which are inside ""
>> and contain space?
>>
>> Thanks,
>> Mohan R
>>
>> _______________________________________________
>> ILUGC Mailing List:
>> http://www.ae.iitm.ac.in/mailman/listinfo/ilugc
>> ILUGC Mailing List Guidelines:
>> http://ilugc.in/mailinglist-guidelines
>
>
>
> --
> Gayatri Hitech
> http://gayatri-hitech.com
--
Gayatri Hitech
http://gayatri-hitech.com
_______________________________________________
ILUGC Mailing List:
http://www.ae.iitm.ac.in/mailman/listinfo/ilugc
ILUGC Mailing List Guidelines:
http://ilugc.in/mailinglist-guidelines