Tuesday, 7 October 2014

Pythonic way to strip a string



I am trying to achieve a python equivalent of the following bash command:



VERSION=$( curl --silent "http://nexus:8080/nexus/service/local/lucene/search?g=com.xxx.yyy&a=zzz" | sed -n 's|<latestRelease>\(.*\)</latestRelease>|\1|p' | sed -e 's/^[ \t]*//' | tail -1 )


I came up with the below snippet of code which does partially work and gets the bunch of <latestRelease>1.0.11</latestRelease> output, which is totally expected. However, I am stuck and want to get only 1.0.11 version as the output of the python script. Again 1.0.11 might differ depending upon the latest version in nexus, so would be nice if experts can suggest a dynamic solution to strip out the portion done in sed and tail part of bash in a pythonic way



#!/usr/bin/env python

import os;
import subprocess;
import re
import string;

proc = subprocess.Popen(["curl", "--silent", "http://nexus:8080/nexus/service/local/lucene/search?g=com.xxx.yyy&a=zzz"], stdout=subprocess.PIPE)
out = proc.communicate()[0]
search_string = "<latestRelease>"
for line in out.splitlines():
if search_string in line:
re.sub(r'\s*latestRelease\s*', '', line)
print line


OUTPUT:



<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>
<latestRelease>1.0.11</latestRelease>


DESIRED OUTPUT: 1.0.11


No comments:

Post a Comment