0

I'm using an API that returns § characters with a color code (1-9 or a-h) which I want to eliminate (§ and following character). Their purpose is for color formatting but I'm not using that and my method iterates through a string to remove them but could not find a better way and it fees too hacky and buggy. Is there like a parameter for the str.replace function that removes the letter after the found character?

WindowsIsCool
  • 25
  • 1
  • 7
  • 1
    Replace all the characters that are not alphanumeric. [How to input a regex in string.replace?](https://stackoverflow.com/questions/5658369/how-to-input-a-regex-in-string-replace) – Yoshikage Kira Jun 12 '21 at 01:20

1 Answers1

0

You can "eliminate" the precise pattern with regular expressions using the sub method:

import re
def clean_string(s):
    return re.sub(r"\$[1-9a-h]", "", s)

clean_string("foo $4 - bar $f")
# > 'foo  - bar '

If you want more flexibility, you can match any non whitespace character following $ with \S:

import re
def clean_string(s):
    return re.sub(r"\$\S", "", s)
Whole Brain
  • 2,097
  • 2
  • 8
  • 18
  • is there any way i could use like * or something to represent any character for more flexibility? – WindowsIsCool Jun 12 '21 at 02:32
  • Yes you can. I updated the answer. If it's too broad (because it also catches symbols after the `$`), you can specify any character you want between brackets, like `r"\$[\wéàÉü]"`. – Whole Brain Jun 12 '21 at 02:40