Добавление пробелов в список строк в указанной позиции c - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь обработать список строк, чтобы получить все мои строки с 8 символами. Если строка содержит менее 8 символов, я заполняю столько пробелов, сколько необходимо, чтобы получить строку длиной 8 символов перед последними 4 символами. Я написал следующую функцию и попытался применить ее к списку строк, но получил список со значениями None.

def lengthstring(string):
    if len(string) == 5:
        new_string = string[0] + "   " + string[1:5]
    elif len(string) == 6:
        new_string = string[0:2] + "  " + string[2:6]
    elif len(string) == 7:
        new_string = string[0:3] + " " + string[3:7]
    else:
        new_string = string

lp = ['7C246', '7B8451', 'NDKW0745', '5B06833']

labels_with_eight_characters = [lengthstring(string) for string in lp]

Спасибо!

Ответы [ 3 ]

1 голос
/ 30 апреля 2020

На всякий случай вам нужна более краткая версия кода:

def lengthstring(string):
    return (
        string if len(string) >= 8
        else string[:-4] + ' ' * (8 - len(string)) + string[-4:])


labels_with_eight_characters = list(map(lengthstring, lp))
print(labels_with_eight_characters)

Это печатает:

['7   C246', '7B  8451', 'NDKW0745', '5B0 6833']
1 голос
/ 30 апреля 2020

Это потому, что вы не возвращали значения в вашей функции lengthstring. После new_string = string добавьте return new_string, и ваш код должен работать нормально.

0 голосов
/ 30 апреля 2020

чуть проще было бы использовать rjust ...

for loc in lp:
    print(loc.rjust(8, ' '))
...