Home > database >  Remove tuple from a list if both elements are partial string match based on regex
Remove tuple from a list if both elements are partial string match based on regex

Time:01-04

[('B5A', 'B5B'), ('B5A', 'B5'), ('B5A', 'B28A'), ('B5A', 'B28B'), ('B5A', 'B28C'), ('B5A', 'B28D'), ('B5A', 'B28E'), ('B5A', 'B28F'), ('B5A', 'B28G'), ('B5A', 'B28H'), ('B5A', 'B28'), ('B5B', 'B28A'), ('B5B', 'B28B'), ('B5B', 'B28C'), ('B5B', 'B28D'), ('B5B', 'B28E'), ('B5B', 'B28F'), ('B5B', 'B28G'), ('B5B', 'B28H'), ('B5B', 'B28'), ('B5', 'B28A'), ('B5', 'B28B'), ('B5', 'B28C'), ('B5', 'B28D'), ('B5', 'B28E'), ('B5', 'B28F'), ('B5', 'B28G'), ('B5', 'B28H'), ('B5', 'B28'), ('B28A', 'B28B'), ('B28A', 'B28C'), ('B28A', 'B28D'), ('B28A', 'B28E'), ('B28A', 'B28F'), ('B28A', 'B28G'), ('B28A', 'B28H'), ('B28A', 'B28'), ('B28B', 'B28C'), ('B28B', 'B28D'), ('B28B', 'B28E'), ('B28B', 'B28F'), ('B28B', 'B28G'), ('B28B', 'B28H'), ('B28B', 'B28'), ('B28C', 'B28D'), ('B28C', 'B28E'), ('B28C', 'B28F'), ('B28C', 'B28G'), ('B28C', 'B28H'), ('B28C', 'B28'), ('B28D', 'B28E'), ('B28D', 'B28F'), ('B28D', 'B28G'), ('B28D', 'B28H'), ('B28D', 'B28'), ('B28E', 'B28F'), ('B28E', 'B28G'), ('B28E', 'B28H'), ('B28E', 'B28'), ('B28F', 'B28G'), ('B28F', 'B28H'), ('B28F', 'B28'), ('B28G', 'B28H'), ('B28G', 'B28'), ('B28H', 'B28')]

I have a list of tuples as above and I want to remove all the tuples from this list if it's elements are partial match for example fist letter B and number after B is same then remove the tuple. so the output should be

[('B5A', 'B28A'), ('B5A', 'B28B'), ('B5A', 'B28C'), ('B5A', 'B28D'), ('B5A', 'B28E'), ('B5A', 'B28F'), ('B5A', 'B28G'), ('B5A', 'B28H'), ('B5A', 'B28'), ('B5B', 'B5'), ('B5B', 'B28A'), ('B5B', 'B28B'), ('B5B', 'B28C'), ('B5B', 'B28D'), ('B5B', 'B28E'), ('B5B', 'B28F'), ('B5B', 'B28G'), ('B5B', 'B28H'), ('B5B', 'B28'), ('B5', 'B28A'), ('B5', 'B28B'), ('B5', 'B28C'), ('B5', 'B28D'), ('B5', 'B28E'), ('B5', 'B28F'), ('B5', 'B28G'), ('B5', 'B28H'), ('B5', 'B28')]

CodePudding user response:

lst = [i for i in lst if re.findall(r'B\d ',i[0]) != re.findall(r'B\d ',i[1])]

CodePudding user response:

You can do a simple list comprehension:

lst = [('B5A', 'B5B'), ('B5A', 'B5'), ('B5A', 'B28A'), ('B5A', 'B28B'), ('B5A', 'B28C'), ('B5A', 'B28D'), ('B5A', 'B28E'), ('B5A', 'B28F'), ('B5A', 'B28G'), ('B5A', 'B28H'), ('B5A', 'B28'), ('B5B', 'B5'), ('B5B', 'B28A'), ('B5B', 'B28B'), ('B5B', 'B28C'), ('B5B', 'B28D'), ('B5B', 'B28E'), ('B5B', 'B28F'), ('B5B', 'B28G'), ('B5B', 'B28H'), ('B5B', 'B28'), ('B5', 'B28A'), ('B5', 'B28B'), ('B5', 'B28C'), ('B5', 'B28D'), ('B5', 'B28E'), ('B5', 'B28F'), ('B5', 'B28G'), ('B5', 'B28H'), ('B5', 'B28'), ('B28A', 'B28B'), ('B28A', 'B28C'), ('B28A', 'B28D'), ('B28A', 'B28E'), ('B28A', 'B28F'), ('B28A', 'B28G'), ('B28A', 'B28H'), ('B28A', 'B28'), ('B28B', 'B28C'), ('B28B', 'B28D'), ('B28B', 'B28E'), ('B28B', 'B28F'), ('B28B', 'B28G'), ('B28B', 'B28H'), ('B28B', 'B28'), ('B28C', 'B28D'), ('B28C', 'B28E'), ('B28C', 'B28F'), ('B28C', 'B28G'), ('B28C', 'B28H'), ('B28C', 'B28'), ('B28D', 'B28E'), ('B28D', 'B28F'), ('B28D', 'B28G'), ('B28D', 'B28H'), ('B28D', 'B28'), ('B28E', 'B28F'), ('B28E', 'B28G'), ('B28E', 'B28H'), ('B28E', 'B28'), ('B28F', 'B28G'), ('B28F', 'B28H'), ('B28F', 'B28'), ('B28G', 'B28H'), ('B28G', 'B28'), ('B28H', 'B28')]

lst = [i for i in lst if i[0][:2] != i[1][:2]]
  •  Tags:  
  • Related