Replace a string located between
Question: Here is my problem: in a variable that is text and contains commas, I try to
delete only the commas located between two strings (in fact `[` and `]`). For
example using the following string:

    
    
    input =  "The sun shines, that's fine [not, for, everyone] and if it rains, it Will Be better."
    output = "The sun shines, that's fine [not for everyone] and if it rains, it Will Be better."
    

I know how to use `.replace` for the whole variable, but I can not do it for a
part of it. There are some topics approaching on this site, but I did not
manage to exploit them for my own question, e.g.:

  * [Repeatedly extract a line between two delimiters in a text file, Python](http://stackoverflow.com/questions/7098530/repeatedly-extract-a-line-between-two-delimiters-in-a-text-file-python)
  * [Python finding substring between certain characters using regex and replace()](http://stackoverflow.com/questions/4622472/python-finding-substring-between-certain-characters-using-regex-and-replace)
  * [replace string between two quotes](http://stackoverflow.com/questions/6686711/replace-string-between-two-quotes)


Answer: 
    import re
    Variable = "The sun shines, that's fine [not, for, everyone] and if it rains, it Will Be better."
    Variable1 = re.sub("\[[^]]*\]", lambda x:x.group(0).replace(',',''), Variable)
    

First you need to find the parts of the string that need to be rewritten (you
do this with `re.sub`). Then you rewrite that parts.

The function `var1 = re.sub("re", fun, var)` means: find all substrings in te
variable `var` that conform to `re`; process them with the function `fun`;
return the result; the result will be saved to the `var1` variable.

The regular expression "[[^]]*]" means: find substrings that start with `[`
(`\[` in re), contain everything except `]` (`[^]]*` in re) and end with `]`
(`\]` in re).

For every found occurrence run a function that convert this occurrence to
something new. The function is:

    
    
    lambda x: group(0).replace(',', '')
    

That means: take the string that found (`group(0)`), replace `','` with `''`
(remove `,` in other words) and return the result.

