Как разбить список на подсписки?

Всем привет, желаю всем хорошего дня. У меня возникла проблема, если кто знает как ее решить и имеет время помогите, пожалуйста.

У меня есть такой список

['-5 -50', '-2   -15 .5', '50;-2e2', '-1  -12', '0,-40']

Мне нужно удалить все ненужные элементы такие как , . ; лишние пробелы и также элементы если их больше 2 как здесь '-2 -15 .5'.

Я пробовала сделать вот это

d=['-5 -50', '-2   -15 .5', '50;-2e2', '-1  -12', '0,-40']
import re
for i, line in enumerate(d):
    d[i] = [int(num) for num in re.split(r'[\s.,;]', line)[:2]]

print(d)

Но у меня есть ошибка

ValueError: invalid literal for int() with base 10: ''

Мне нужно получить вот это

[[-5, -50], [-2,-15], [50, -200], [-1, -12], [0,-40]]

Также я знаю что если сделать так

from decimal import *
print(int(Decimal('-2e2')))

Мы получим -200


Ответы (2 шт):

Автор решения: strawdog

Если можно использовать регулярные выражения, то так:

import re
a = ['-5 -50', '-2   -15 .5', '50;-2e2', '-1  -12', '0,-40']
res = [list(map(int,[y for y in re.split(r"[^-\d]", x) if y][:2])) for x in a]

res:

[[-5, -50], [-2, -15], [50, -2], [-1, -12], [0, -40]]

UPDATE

Я не заметил сначала в исходных данных числа, записанного в экспоненциальной форме. Для его обработки придется добавить еще одно преобразование и изменить шаблон регулярки, потому как преобразование сразу в int с такими числами работать не будет:

res = [list(map(int,(map(float,[y for y in re.split(r"[^-\w]", x) if y][:2])))) for x in a]

res:

[[-5, -50], [-2, -15], [50, -200], [-1, -12], [0, -40]]
→ Ссылка
Автор решения: Namerek
import re


def parts(txt: str):
    p = re.findall(
        r'-?[\de.]+',
        txt
    )
    items = []
    for item in p:
        try:
            items.append(int(item))
        except (TypeError, ValueError):
            try:
                items.append(int(float(item)))
            except (TypeError, ValueError):
                print(item)
                continue
    return items[:2]


a = ['-5 -50', '-2   -15 .5', '50;-2e2', '-1  -12', '0,-40']
print([*map(parts, a)])
# [[-5, -50], [-2, -15], [50, -200], [-1, -12], [0, -40]]
→ Ссылка