Как разместить разделители между цифрами и текстом в Python?

У меня возникли проблемы с размещением разделителей в следующем тексте. Я хочу разместить '|' между текстом и между каждым из трех последующих номеров. Проблема в том, что иногда числа фактически дефиса обозначают 0 (т. Е. – вместо 0).

text = """ A line of text 85 25,653 -75,321 Another - line 5,432 (5,353) -- Another one 23 -0- 86 One -- more -- -0- 34 25 """ 

До сих пор я могу получить большую часть «|» разделителей, используя следующий код:

 text = re.sub(r'\s[(](\d)', '|(\\1', text) text = re.sub(r'\s(\d)', '|\\1', text) text = re.sub(r'\s-(\d)', '|-\\1', text) 

Эти результаты:

 A line of text |85 |25,653 |-75,321 Another - line |5,432 |(5,353) -- Another one |23 |-0- |86 One -- more --|-0-|34|25 

Тем не менее, я хочу другой разделитель перед вторым – в строке 4 без размещения разделителя между One и -. Есть ли способ сделать это в Python?

Я бы хотел, чтобы конечный результат был следующим:

 A line of text |85 |25,653 |-75,321 Another - line |5,432 |(5,353) |-- Another one |23 |-0- |86 One -- more |--|-0-|34|25 

Использование строковых методов Python:

 for line in text.splitlines(): line = line.split() if line: print '|'.join((' '.join(line[:-3]), '|'.join(line[-3:]))) 

Это разбивает строку везде, где есть пробел, затем объединяет три столбца данных с | s и текст вместе с s, а затем добавляет окончательный | между текстом и данными.