我需要编写一个函数来返回任何文本的第一个字母(并使其大写),如:
shortened = shorten("Don't repeat yourself")
print(shortened)
预期产量:
DRY
和:
shortened = shorten("All terrain armoured transport")
print(shortened)
预期产量:
ATAT
使用列表理解和加入
shortened = "".join([x[0] for x in text.title().split(' ') if x])
使用正则表达式,您可以匹配除每个单词的第一个字母之外的所有字符,将它们替换为空字符串以将其删除,然后将结果字符串大写:
import re
def shorten(sentence):
return re.sub(r"\B[\S]+\s*","",sentence).upper()
print(shorten("Don't repeat yourself"))
输出:
DRY
text = 'this is a test'
output = ''.join(char[0] for char in text.title().split(' '))
print(output)
意向
让我解释一下这是如何工作的。
我的第一步是将每件作品的第一个字母大写
text.title()
现在我希望能够将每个单词之间的空格分开,这将成为一个列表
text.title()split(' ')
有了这个我最终得到'This','Is','A','Test'
所以现在我显然只想要列表中每个单词的第一个字符
text.title()中的单词split(''):print(word [0])#T I A T.
现在我可以把所有这些都归结为一种叫做列表理解的东西
output = [char[0] for char in text.title().split(' ')]
# ['T','I','A','T']
我可以使用''.join()
将它们组合在一起,我不再需要[]括号,因为它不需要是一个列表
output = ''.join(char[0] for char in text.title().split(' ')