用Python创建首字母缩略词

时间:2010-12-04 18:49:57

标签: python

在Python中,我如何制作给定字符串的首字母缩写?

喜欢,输入字符串:

'First Second Third'

输出:

'FST'

我正在尝试类似的事情:

>>> for e in x:
        print e[0]

但是它没有用......有关如何做到这一点的任何建议?我确信有一种正确的方法可以做到这一点,但我似乎无法弄明白。我必须使用re吗?

9 个答案:

答案 0 :(得分:15)

如果您只想使用大写

>>>line = ' What AboutMe '
>>>filter(str.isupper, line)
'WAM'

那些可能不是领导上限的词语。

>>>line = ' What is Up '
>>>''.join(w[0].upper() for w in line.split())
'WIU'

只有Caps字样呢。

>>>line = ' GNU is Not Unix '
>>>''.join(w[0] for w in line.split() if w[0].isupper())
'GNU'

答案 1 :(得分:13)

尝试

print "".join(e[0] for e in x.split())

你的循环实际上遍历字符串x中的所有字符。如果您想循环使用单词,可以使用x.split()

答案 2 :(得分:5)

没有re

>>> names = 'Vincent Vega Jules Winnfield'
>>> ''.join(x[0] for x in names.split())
'VVJW'

答案 3 :(得分:3)

现在有点不同......

words = "There ain't no such thing as a free lunch."
acronym = ''.join(word[0] for word in words.upper().split())
print acronym
# TANSTAAFL

TANSTAAFL是一个相当知名的人,BTW)。

答案 4 :(得分:2)

s = 'First Second Third'
x = s.split(' ')
for e in x:
    print e[0]

应该这样做。

答案 5 :(得分:2)

你也可以使用

re.split('\W')

分割非单词字符的行/文字。这可能会更强大一些。

答案 6 :(得分:2)

如果您想以语法正确的方式(不论语言环境)做事,请使用title(),然后filter()

acronym = filter(str.isupper, my_string.title())

title()非常棒;它会使字符串被标记并且根据区域设置是正确的。

答案 7 :(得分:0)

这里是如何用正则表达式做首字母缩写词,将数字保留为:

import re
words = "internet explorer 10"
print re.sub(r"([a-zA-Z])[a-z,A-Z]+\s*",r"\1",words).upper()

<强> IE10

答案 8 :(得分:0)

有一个基于python的工具可以完成此任务,建议使用多个缩写词,可以通过以下方式安装

pip install acronym

源代码仓库在这里:https://github.com/bacook17/acronym