Home > Software engineering >  How to replace a character within a string in a list?
How to replace a character within a string in a list?

Time:05-25

I have a list that has some elements of type string. Each item in the list has characters that are unwanted and want to be removed. For example, I have the list = ["string1.", "string2."]. The unwanted character is: ".". Therefore, I don't want that character in any element of the list. My desired list should look like list = ["string1", "string2"] Any help? I have to remove some special characters; therefore, the code must be used several times.

hola = ["holamundoh","holah","holish"]
print(hola[0])
print(hola[0][0])
for i in range(0,len(hola),1):
  for j in range(0,len(hola[i]),1):
    if (hola[i][j] == "h"):
      hola[i] = hola[i].translate({ord('h'): None})
print(hola)

However, I have an error in the conditional if: "string index out of range". Any help? thanks

CodePudding user response:

Modifying strings is not efficient in python because strings are immutable. And when you modify them, the indices may become out of range at the end of the day.

list_ = ["string1.", "string2."]

for i, s in enumerate(list_):
    l[i] = s.replace('.', '')

Or, without a loop:

list_ = ["string1.", "string2."]

list_ = list(map(lambda s: s.replace('.', ''), list_))

CodePudding user response:

You can define the function for removing an unwanted character.

def remove_unwanted(original, unwanted):
    return [x.replace(unwanted, "") for x in original]

Then you can call this function like the following to get the result.

print(remove_unwanted(hola, "."))

CodePudding user response:

Use str.replace for simple replacements:

lst = [s.replace('.', '') for s in lst]

Or use re.sub for more powerful and more complex regular expression-based replacements:

import re
lst = [re.sub(r'[.]', '', s) for s in lst]

Here are a few examples of more complex replacements that you may find useful, e.g., replace everything that is not a word character:

import re
lst = [re.sub(r'[\W] ', '', s) for s in lst]
  • Related