У меня есть строка с двумя "-"
467.2-123-hdxdlfow
Я хочу удалить все после второго "-", чтобы я получил "467.2-123". Каков наилучший способ сделать это?
before, sep, after = theString.rpartition("-")
Это разбивает строку о последнем появлении "-", и ваш ответ будет переменной before.
before
In [6]: "-".join('467.2-123-hdxdlfow'.split('-')[0:2]) Out[6]: '467.2-123'
Если вы после всего, кроме последнего элемента, я модифицировал ответ Спикавиго, чтобы исключить последний элемент.
a='467.2-123-hdxdlfow' '-'.join(a.split('-')[:-1])
>>> s = '467.2-123-hdxdlfow' >>> s[:s.rfind('-')] '467.2-123'
a='467.2-123-hdxdlfow' '-'.join(a.split('-')[:2])
Если у вас ровно 2 '-', вы можете сделать
a.rsplit('-',1)[0]
Вы можете попробовать это result = re.sub("([^-]*-[^-]*)(-.*$)", r"\1", '467.2-123-hdxdlfow') дает 467.2-123
result = re.sub("([^-]*-[^-]*)(-.*$)", r"\1", '467.2-123-hdxdlfow')
467.2-123
Попробуйте это регулярное выражение
([^-]*-[^-]*)-.*
и запросите результат для первой группы захвата ((...) в примере).
(...)