首页 > 解决方案 > 我正在尝试解决其他首字母缩略词

问题描述

我有以下字符串需要为其创建首字母缩略词:

Institute of Electrical and Electronics Engineers
As Soon As Possible
University of California San Diego
Self Contained Underwater Breathing Apparatus

这是我的代码

my_string = input()

my_string2 = my_string.upper()

for x in range(0, 1, len(my_string2)):
    print(my_string2[0::15])

但它只适用于第一个输入。此代码未涵盖另外三个示例。我需要的是修改此代码,使其可以从任何输入中创建一个首字母缩略词。第一个首字母缩略词称为“电气和电子工程师协会”,一旦将其放入输入中,它就会返回 IEEE 作为输出。基本上所有大写的第一个字母都被保留,没有小写的单词保留。

标签: python

解决方案


这是一个基于正则表达式的解决方案,它查找以大写字母开头的单词并提取其首字母,然后join将它们全部组合在一起以构成首字母缩略词:

import re

strings = [
           'As Soon As Possible',
           'Institute of Electrical and Electronics Engineers',
           'University of California San Diego',
           'Self Contained Underwater Breathing Apparatus'
           ]

for s in strings:
    acronym = ''.join(re.findall(r'\b[A-Z]', s))
    print(acronym)

如果您不想使用正则表达式,您可以将字符串拆分并测试每个单词的第一个字符以查看它是否为大写:

for s in strings:
    acronym = ''.join(w[0] for w in s.split(' ') if w[0].isupper())
    print(acronym)

无论哪种情况,输出都是:

ASAP
IEEE
UCSD
SCUBA

要从输入运行,请使用以下代码:

import re
s = input()
acronym = ''.join(re.findall(r'\b[A-Z]', s))
print(acronym)

或者:

s = input()
acronym = ''.join(w[0] for w in s.split(' ') if w[0].isupper())
print(acronym)

ideone.com 上的演示


推荐阅读