Итак, у меня есть этот код, в котором я создаю список с подстроками:

string = "|01|12345|TEXT1|TEXT2|"

x = string.count("|")

if string.count('|') == 3:

    subst = string.strip('|').split('|')

    print(substr)

else:

    substr = string.strip('|').split('|')

    print(substr)

Результат :

['01', '12345', 'TEXT1', 'TEXT2']

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

[LAS|01|G12345|TEXT1|TEXT2|]

Я знаю, что могу просто сделать:

print("[LAS|" + substr[0] + "|G" + substr[1] + "|" + substr[2] + "|" + substr[3])

Но это жестко запрограммировано, что, если моя строка, которую я получаю, уступает место большему количеству подстрок? Я не хочу использовать выделение операторов if, если количество ('|') == 4, == 5, == 6 и т. Д.

Как убедиться, что то, что я печатаю, содержит все подстроки. И между каждой подстрокой есть вертикальная черта (|).

Спасибо

-3
Rob Hesseling 3 Сен 2020 в 11:42

2 ответа

Лучший ответ
print("[LAS|%s|]" % "|".join(substr))

"|".join(substr) берет все части в substr и соединяет их с помощью разделителя |.

Если вам нужна дополнительная буква "G", вам нужно будет обрабатывать первые один или два элемента отдельно:

print("[LAS|%s|G%s|]" % (substr[0], "|".join(substr[1:]))

Или

print("[LAS|%s|G%s|%s|]" % (substr[0], substr[1], "|".join(substr[2:]))
1
sabik 3 Сен 2020 в 14:00
string = '|01|12345|TEXT1|TEXT2|'

substr = string.strip('|').split('|')

if len(substr) != 3:  # If you already have used split better to check the length than counting
    substr.insert(0, '[LAS')
    substr[2] = 'G' + substr[2]
    substr.append("]")

print("|".join(substr))  # [LAS|01|G12345|TEXT1|TEXT2|]
1
Adirio 3 Сен 2020 в 08:54