Как сделать ярлык первых букв любого текста? - PullRequest
0 голосов
/ 06 апреля 2019

Мне нужно написать функцию, которая возвращает первые буквы (и сделать их прописными) любого текста, например:

shortened = shorten("Don't repeat yourself")
print(shortened)

Ожидаемый результат:

DRY

и

shortened = shorten("All terrain armoured transport")
print(shortened)

Ожидаемый результат:

ATAT

Ответы [ 3 ]

0 голосов
/ 06 апреля 2019

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

import re

def shorten(sentence):
    return re.sub(r"\B[\S]+\s*","",sentence).upper()

print(shorten("Don't repeat yourself"))

Вывод:

DRY
0 голосов
/ 06 апреля 2019
text = 'this is a test'
output = ''.join(char[0] for char in text.title().split(' '))
print(output)

TIAT

Позвольте мне объяснить, как это работает.

Мой первый шаг - использовать первую букву каждой работы

text.title()

Теперь я хочу иметь возможность разделять каждое слово на промежуток между ними, это станет списком

text.title()split(' ')

После этого я получу 'This','Is','A','Test', так что теперь я, очевидно, хочу толькопервый символ каждого слова в списке

для слова в text.title () split (''): print (word [0]) # TIAT

Теперь я могу объединить все, чтов то, что называется списком

output = [char[0] for char in text.title().split(' ')]
# ['T','I','A','T']

Я могу использовать ''.join(), чтобы объединить их вместе, мне больше не нужны скобки [], потому что это не должен быть список

output = ''.join(char[0] for char in text.title().split(' ')
0 голосов
/ 06 апреля 2019

Используйте понимание списка и присоединяйтесь

shortened = "".join([x[0] for x in text.title().split(' ') if x])
...