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

Code demo

See regex in use here

(?:(?<=\s)|^)(?:[a-z]|\d+)
  • (?:(?<=\s)|^) 确保前面是 space 或行首
  • (?:[a-z]|\d+) 匹配单个字母或一个或多个数字

i 标志(python 中的 re.I)允许 [a-z] 匹配其大写变体。

See code in use here

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