строка питона: удалить все нули и одно значение перед каждым нулем в строке - PullRequest
0 голосов
/ 17 мая 2018

У меня наивный вопрос по питону;Мне нужно удалить "0 и значение, предшествующее ему (любое значение), из строки" s ":

s = "8      9243  8607  56     586262       4697424       00000       ik   0       C   S<->L       G   0       G  0       G  0       P    A<->A     R    0"

и вывести следующее:

8      9243  8607  56     586262       4697424       00000 C   S<->L P    A<->A

Любые советы?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вот "хакерское" решение.

Обратите внимание, что он не сохраняет пробелы в "s", как в вашем выводе (возможно, может быть сохранен при необходимости), но результирующие значения такие же:

# s = ...  # your s string

ss = []

split = s.split()

for i, n in enumerate(split):
    try:
        if split[i+1] == '0':
            pass
        elif n != '0':
            ss.append(n)

    except IndexError:
        pass

print ' '.join(ss)

печать:

8 9243 8607 56 586262 4697424 00000 C S<->L P A<->A
0 голосов
/ 17 мая 2018

Вы можете использовать re.sub:

import re
s = "8      9243  8607  56     586262       4697424       00000       ik   0       C   S<->L       G   0       G  0       G  0       P    A<->A     R    0"
new_s = re.sub('\s{6,}', '  ', re.sub('[a-zA-Z\d]+\s+0', '', s))

Выход:

8  9243  8607  56     586262  0000  C   S<->L  P    A<->A     
...