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.:
Using replaceAll() The first parameter takes in a regular expression while the second takes in a string with the replacement value. String start = "\\{"; String end = "\\}"; String updatedUrl = url. replaceAll(start + ".
Strings in Python are immutable meaning you cannot replace parts of them. You can however create a new string that is modified.
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.
You can use an expression like this to match them (if the brackets are balanced):
,(?=[^][]*\])
Used something like:
re.sub(r",(?=[^][]*\])", "", str)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With