Python: Как отформатировать строку с помощью функции split? - PullRequest
0 голосов
/ 01 июня 2018

Предположим, у меня есть следующий словарь.

params = {'a': 'aaa', 'b': 'bbb', 'c': 'ccc', 'd': 'ddd-hoge'}

При печати с использованием следующего сценария,

>>> print("1: {a} 2: {b} 3: {c} 4: {d}.split('-')[0]".format(**params))

вывод будет

"1: aaa 2: bbb 3: ccc 4: ddd-hoge.split('-')[0]"

Как следуетЯ изменяю скрипт, чтобы получить тот же вывод, что и следующий?

"1:aaa 2:bbb 3:ccc 4:ddd"

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Просто разделите потом:

print("1: {a} 2: {b} 3: {c} 4: {d}".format(**params).split('-')[0])
0 голосов
/ 01 июня 2018

Операция такой сложности не будет обрабатываться мини-языком форматирования.Вам нужно будет выполнить преобразование извне.

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

p = params.copy()
p['d'] = params['d'].split('-')[0]
print("1: {a} 2: {b} 3: {c} 4: {d}".format(**p))

Конечно, вы можете изменить params на месте.Более элегантным решением может быть применение преобразования ко всем значениям:

print("1: {a} 2: {b} 3: {c} 4: {d}".format(**{k: v.split('-')[0] for k, v in params.items()}))
0 голосов
/ 01 июня 2018

Кажется, что это работает:

params = {'a': 'aaa', 'b': 'bbb', 'c': 'ccc', 'd': 'ddd-hoge'}

print("1: {a} 2: {b} 3: {c} 4: {d}".format(**{
    k: v.split('-')[0] for k, v in params.items()}))

Это делает обработку по требованию, а затем форматирует для печати. ​​

Результаты:

1: aaa 2: bbb 3: ccc 4: ddd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...