title: Remove all punctuation from string, except if it's between digits
body: <p>I have a text that contains words and numbers. I'll give a representative example of the text:</p>
  
  <pre><code>string = "This is a 1example of the text. But, it only is 2.5 percent of all data"
  </code></pre>
  
  <p>I'd like to convert it to something like: </p>
  
  <pre><code>"This is a  1 example of the text But it only is  2.5  percent of all data"
  </code></pre>
  
  <p>So removing <strong>punctuation</strong> (can be <code>.</code> <code>,</code> or any other in <code>string.punctuation</code>) and also put a space between digits and words when it is concatenated. But keep the floats like 2.5 in my example. </p>
  
  <p>I used the following code:</p>
  
  <pre><code>item = "This is a 1example of the text. But, it only is 2.5 percent of all data"
  item = ' '.join(re.sub( r"([A-Z])", r" \1", item).split())
  # This a start but not there yet !
  #item = ' '.join([x.strip(string.punctuation) for x in item.split() if x not in string.digits])
  item = ' '.join(re.split(r'(\d+)', item) )
  print item
  </code></pre>
  
  <p>The result is : </p>
  
  <pre><code> &gt;&gt; "This is a  1 example of the text. But, it only is  2 . 5  percent of all data"
  </code></pre>
  
  <p>I'm almost there but can't figure out that last peace. </p>