Как разместить разделители между числами и текстом в Python? - PullRequest
3 голосов
/ 07 октября 2011

У меня проблемы с размещением разделителей в следующем тексте. Я хочу разместить '|' между текстом и между каждым из 3 последующих чисел. Проблема в том, что иногда цифры на самом деле являются тире, обозначая 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

1 Ответ

2 голосов
/ 07 октября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...