Python 从每个单词的第一个字符创建首字母缩略词并包括数字
Python create acronym from first characters of each word and include the numbers
我有一个字符串如下:
theatre = 'Regal Crown Center Stadium 14'
我想根据每个单词的第一个字母将其分解为首字母缩略词,但也包括两个数字:
期望的输出 = 'RCCS14'
我的代码尝试如下:
acronym = "".join(word[0] for word in theatre.lower().split())
acronym = "".join(word[0].lower() for word in re.findall("(\w+)", theatre))
acronym = "".join(word[0].lower() for word in re.findall("(\w+ | \d{1,2})", theatre))
acronym = re.search(r"\b(\w+ | \d{1,2})", theatre)
其中我得到类似的结果:rccs1
但似乎无法捕获最后一个数字。在某些情况下,数字也位于名称的中间:'Regal Crown Center 14 Stadium'
。 TIA!
您可以使用 re.sub()
删除所有小写字母和空格。
正则表达式: [a-z ]+
详情:
[]+
匹配列表中 1 和 1 之间的单个字符
无限次
Python代码:
re.sub(r'[a-z ]+', '', theatre)
输出:RCCS14
(?:(?<=\s)|^)(?:[a-z]|\d+)
(?:(?<=\s)|^)
确保前面是 space 或行首
(?:[a-z]|\d+)
匹配单个字母或一个或多个数字
i
标志(python 中的 re.I
)允许 [a-z]
匹配其大写变体。
import re
r = re.compile(r"(?:(?<=\s)|^)(?:[a-z]|\d+)", re.I)
s = 'Regal Crown Center Stadium 14'
print(''.join(r.findall(s)))
上面的代码找到正则表达式匹配的所有实例,并将列表项连接成一个字符串。
结果:RCCS14
我没有足够的声望,所以无法发表评论,但是 S。 Jovan 的回答并不令人满意,因为它假设每个单词都以大写字母开头,并且每个单词只有一个大写字母。
re.sub(r'[a-z ]+', '', "Regal Crown Center Stadium YB FIEUBFB DBUUFG FUEH 14")
将returns'RCCSYBFIEUBFBDBUUFGFUEH14'
但是 ctwheels 答案将能够在这种情况下工作:
r = re.compile(r"\b(?:[a-z]|\d+)", re.I)
s = 'Regal Crown Center Stadium YB FIEUBFB DBUUFG FUEH 14'
print(''.join(r.findall(s)))
将打印
RCCSYFDF14
import re
theatre = 'Regal Crown Center Stadium 14'
r = re.findall("\s(\d+|\S)", ' '+theatre)
print(''.join(r))
给我 RCCS14
我有一个字符串如下:
theatre = 'Regal Crown Center Stadium 14'
我想根据每个单词的第一个字母将其分解为首字母缩略词,但也包括两个数字:
期望的输出 = 'RCCS14'
我的代码尝试如下:
acronym = "".join(word[0] for word in theatre.lower().split())
acronym = "".join(word[0].lower() for word in re.findall("(\w+)", theatre))
acronym = "".join(word[0].lower() for word in re.findall("(\w+ | \d{1,2})", theatre))
acronym = re.search(r"\b(\w+ | \d{1,2})", theatre)
其中我得到类似的结果:rccs1
但似乎无法捕获最后一个数字。在某些情况下,数字也位于名称的中间:'Regal Crown Center 14 Stadium'
。 TIA!
您可以使用 re.sub()
删除所有小写字母和空格。
正则表达式: [a-z ]+
详情:
[]+
匹配列表中 1 和 1 之间的单个字符 无限次
Python代码:
re.sub(r'[a-z ]+', '', theatre)
输出:RCCS14
(?:(?<=\s)|^)(?:[a-z]|\d+)
(?:(?<=\s)|^)
确保前面是 space 或行首(?:[a-z]|\d+)
匹配单个字母或一个或多个数字
i
标志(python 中的 re.I
)允许 [a-z]
匹配其大写变体。
import re
r = re.compile(r"(?:(?<=\s)|^)(?:[a-z]|\d+)", re.I)
s = 'Regal Crown Center Stadium 14'
print(''.join(r.findall(s)))
上面的代码找到正则表达式匹配的所有实例,并将列表项连接成一个字符串。
结果:RCCS14
我没有足够的声望,所以无法发表评论,但是 S。 Jovan 的回答并不令人满意,因为它假设每个单词都以大写字母开头,并且每个单词只有一个大写字母。
re.sub(r'[a-z ]+', '', "Regal Crown Center Stadium YB FIEUBFB DBUUFG FUEH 14")
将returns'RCCSYBFIEUBFBDBUUFGFUEH14'
但是 ctwheels 答案将能够在这种情况下工作:
r = re.compile(r"\b(?:[a-z]|\d+)", re.I)
s = 'Regal Crown Center Stadium YB FIEUBFB DBUUFG FUEH 14'
print(''.join(r.findall(s)))
将打印
RCCSYFDF14
import re
theatre = 'Regal Crown Center Stadium 14'
r = re.findall("\s(\d+|\S)", ' '+theatre)
print(''.join(r))
给我 RCCS14