Как разбить строку без пробелов по регистру?
Есть строковые переменные вида:
siRNA, shRNA, sgRNA, miR-123, mutGene, lentivirusGENE, pDNA-ABC
Как разбить строку на две части по типу "приставка", "Корень". Приставка состоит из символов только в нижнем регистре, "Корень" всегда начинается с заглавной буквы, но может состоят из цифр, символов разного регистра и тп.
Как бы максимально просто это реализовать?
На выходе должен быть список вида:
['si', 'RNA'], ['mut', 'Gene'], ['p', 'DNA-ABC']
Спасибо))
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Воспользуйтесь регулярными выражениями:
import re
def parse_str(s):
res = re.findall(r"([a-z]+)([A-Z]+.*)", s)
if not res:
return None
return res[0]
тесты
In [229]: parse_str("siRNA")
Out[229]: ('si', 'RNA')
In [230]: parse_str("mutGene")
Out[230]: ('mut', 'Gene')
In [231]: parse_str("miR-123")
Out[231]: ('mi', 'R-123')
In [232]: parse_str("blah-blah-blah")