mikelowry
mikelowry

Reputation: 1727

How to remove prefixes from strings?

I'm trying to do some text preprocessing so that I can do some string matching activities.

I have a set of strings, i want to check if the first word in the string starts with "1/" prefix. If it does, I want to remove this prefix but maintain the rest of the word/string.

I've come up with the following, but its just removing everything after the first word and not necessarily removing the prefix "1/"

prefixes = (r'1/')
#remove prefixes from string
def prefix_removal(text):
    for word in str(text).split():
        if word.startswith(prefixes):
            return word[len(prefixes):]
        else:
            return word

Any help would be appreciated!

Thank you!

Upvotes: 3

Views: 3175

Answers (2)

a_guest
a_guest

Reputation: 36249

Starting with Python 3.9 you can use str.removeprefix:

word = word.removeprefix(prefix)

For other versions of Python you can use:

if word.startswith(prefix):
    word = word[len(prefix):]

Upvotes: 3

N. Rak
N. Rak

Reputation: 128

Assuming you only want to remove the prefix from the first word and leave the rest alone, I see no reason to use a for loop. Instead, I would recommend this:

def prefix_removal(text):
    first_word = text.split()[0]
    if first_word.startswith(prefixes):
         return text[len(prefixes):]
    return text

Hopefully this answers your question, good luck!

Upvotes: 2

Related Questions