在Python中,我如何制作给定字符串的首字母缩写?
喜欢,输入字符串:
'First Second Third'
输出:
'FST'
我正在尝试类似的事情:
>>> for e in x:
print e[0]
但是它没有用......有关如何做到这一点的任何建议?我确信有一种正确的方法可以做到这一点,但我似乎无法弄明白。我必须使用re
吗?
答案 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