Преобразование строки в другую строку путем замены символов в зависимости от количества слов в строке

#python-3.x #python-3.6

#python-3.x #python-3.6

Вопрос:

Если у меня есть какая-либо строка, например:

‘arest alpha gma beta’ или ‘alpha’

Я хочу, чтобы:

  • добавить звездочку после каждого ключевого слова
  • если слов несколько, замените пробел between в них на ||

Нет, я использую:

 term_str = " ".join(keyword.strip().split()).replace(' ', '* ||')
  

Проблема в том, что если используется только одно ключевое слово, то * не добавляется.

Я знаю, что могу написать for loop и condition , но я ищу что-то большее, чем однострочное выражение python.

Ответ №1:

Мы можем разделить строку, добавить * после каждого слова, затем соединить измененные слова вместе с || :

 def func(keywords):
    return '||'.join(map('{}*'.format, keywords.split()))

print(func('arest alpha gma beta'))  # arest*||alpha*||gma*||beta*
print(func('alpha '))  # alpha*
  

Комментарии:

1. Я предполагаю, что субъективно, но я думаю, что понимание было бы более читабельным, чем map() .