[SOLVED] Python split using multiple characters in a list

Issue

Original List :

['ValueA : 123', 'Source: 10.01, Port: 101, Destination: 10.10', 'ValueB: 4,5,6']

I want to split the value which has multiple ":" and the results should look something like below:

['ValueA : 123', 'Source: 10.01', 'Port: 101', 'Destination: 10.10', 'ValueB: 4,5,6']

Note: This will not always be the second string. This could be anywhere in the list. Basically looking to split a value in the list which has Source, Post and Destination in the same list value.

Solution

You could try to split every element in your list, and merge those lists by adding them using sum():

>>> L = ['ValueA : 123', 'Destination: 10.01, Port: 101, Destination: 10.10', 'ValueB: 456']
>>> L = sum(
    (
        # Split only if condition is met
        element.split(", ") if all(word in element for word in ["Source", "Port", "Destination"]) else [element]
        for element in L
    ),
    start=[],
)
>>> L

Notice the keyword argument used in sum(..., start=[]). By default, sum() starts with start=0 because it’s commonly used to add numerical values. In this case, we’re using sum() to add lists, but 0+[] would raise an exception. This is why we must change the start value to a list, an empty list.

Answered By – aaossa

Answer Checked By – Mildred Charles (BugsFixing Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *