Table of contents

  1. Python | Deleting all occurrences of character
  2. Python | All occurrences of substring in string
  3. Python | Remove all occurrences in nested list

Python | Deleting all occurrences of character

If you want to delete all occurrences of a specific character from a string in Python, you can use the str.replace() method.

Here's how you can do it:

def remove_char(s, char):
    return s.replace(char, '')

# Test
string = "apple"
print(remove_char(string, 'p'))  # Output: ale

In the example above, the function remove_char takes a string s and a character char. It returns a new string where all occurrences of char in s have been removed.

If you're dealing with a list of characters and you want to remove all of them from a string, you can use a loop:

def remove_chars(s, chars):
    for char in chars:
        s = s.replace(char, '')
    return s

# Test
string = "[email protected]"
chars_to_remove = ['a', 'e', '@']
print(remove_chars(string, chars_to_remove))  # Output: xmplstring.com

In this example, the function remove_chars takes a string s and a list of characters chars. It returns a new string where all occurrences of characters in the chars list have been removed from s.


Python | All occurrences of substring in string

If you want to find all occurrences of a substring in a string and get their indices in Python, you can use the following methods:

  1. Using a loop and str.find():

    The find() method returns the lowest index of the substring (if found). If not found, it returns -1.

    def find_all_occurrences(main_string, substring):
        start = 0
        while start < len(main_string):
            start = main_string.find(substring, start)
            if start == -1: break
            yield start
            start += 1
    
    string = "hello world, hello universe"
    substring = "hello"
    print(list(find_all_occurrences(string, substring)))
    
  2. Using Regular Expressions:

    This method is especially useful when searching for patterns in the string.

    import re
    
    def find_all_occurrences(main_string, substring):
        return [match.start() for match in re.finditer(substring, main_string)]
    
    string = "hello world, hello universe"
    substring = "hello"
    print(find_all_occurrences(string, substring))
    

Both methods will output:

[0, 13]

This indicates that the substring "hello" is found at index 0 and 13 in the main string.


Python | Remove all occurrences in nested list

In this tutorial, we'll discuss how to remove all occurrences of a specific value from a nested list. Nested lists, also known as "lists of lists," can have varying depths, and the value can be present at any level. We'll approach the problem using recursion to ensure all depths are covered.

Problem Statement:

Given a nested list lst and a value val, remove all occurrences of val from lst.

Approach:

  1. Traverse the nested list.
  2. If an element is a list, recursively process it.
  3. If an element equals the target value, remove it.
  4. Return the processed list.

Implementation:

def remove_all_occurrences(lst, val):
    # Create a new list for results
    result = []
    
    for item in lst:
        # If the item is a list, process it recursively
        if isinstance(item, list):
            processed_sublist = remove_all_occurrences(item, val)
            result.append(processed_sublist)
        # If the item is not the target value, add to result
        elif item != val:
            result.append(item)
            
    return result

# Test
nested_list = [1, 2, [3, 4, [2, 5], 2, 6], 2, 7, [2]]
value_to_remove = 2
print(remove_all_occurrences(nested_list, value_to_remove))
# Output: [1, [3, 4, [5], 6], 7, []]

Explanation:

  • The function remove_all_occurrences takes a list (lst) and a value (val) as input arguments.

  • We use the isinstance function to check if an item in the list is itself a list. If it is, we call the function recursively, allowing us to handle nested lists of any depth.

  • If the item is not a list and it's not equal to the value we want to remove (val), we add it to the result list.

  • This recursive approach ensures we process all sublists, regardless of how deeply nested they are.

Summary:

Removing all occurrences of a value from a nested list in Python can be effectively handled using recursion. By recursively processing sublists and keeping track of items that are not the target value, we can build a new list that excludes the unwanted value at all levels of nesting.


More Python Questions

More C# Questions