根据字母计数检索括号缩写的定义

共5个回答,已解决, 标签: python regex text text-parsing abbreviation

我需要根据括号中包含的字母数量来检索首字母 acronym 词的定义。对于我正在处理的数据,括号中的字母数量与要检索的单词数量相对应。我知道这不是获取缩写的可靠方法,但是在我的情况下,它会是。例如:

String = '虽然家庭健康史 (FHH) 被普遍认为是常见慢性病的重要危险因素,但护士很少考虑它。'

期望输出: 家庭健康史 (FHH) 、护士 (NP)

我知道如何从字符串中提取括号,但是在那之后,我被卡住了。感谢任何帮助。

重新导入

A = '虽然家庭健康史 (FHH) 被普遍接受为
常见慢性病的重要危险因素,很少被考虑
一位护士 (NP)

X2 = re.findall ('(\ (.*?\)',a)

X2 中的 x:
长度 = len (x)
打印 (x,长度)
第1个答案(采用)

使用 regex match 查找匹配开始的位置。然后使用 python 字符串索引获取导致匹配开始的子字符串。将子字符串按单词拆分,得到最后 n 个单词。其中 n 是缩写的长度。

重新导入
尽管家庭健康史 (FHH) 被普遍认为是常见慢性病的重要危险因素,但护士很少考虑它。'


对于 re.finditer (r "\ (.*?) \) 中的匹配:
Start _ index = match.start ()
组 (1)
尺码 = len (abbr)
单词 = s [: start _ index].split () [-size:]
Join = "".join (单词)

打印 (定义)

此印刷品:

家庭健康史
NP 护士
第2个答案

一个想法,用一个递归模式正则表达式模块.

\ B [A-Za-z] \ s (?R)?\ (?[A-Z) (?= [A-Z) * \)?

在 regex101 上看到这个 pcre 演示

  • \b[A-Za-z] \s 匹配一个词边界, 一个或多个一个或多个空白空间
  • (?R)?递归部分:可选从开始粘贴图案
  • \(? need to make the parenthesis optional for recursion to fit in \)?
  • [A-Z](?=[A-Z]*\) match one upper alpha if followed by closing )中间有任何 A-Z
  1. 不检查第一个单词字母是否与缩写中位置的字母实际匹配。
  2. 不检查缩写前面是否有左括号。要检查,请添加可变长度的向后看。改变[A-Z](?=[A-Z]*\)) to (?<=\([A-Z]*)[A-Z](?=[A-Z]*\))&i=ABC (ABC) ABC) (ABC).
第3个答案

这能解决你的问题吗?

A = '虽然家庭健康史 (FHH) 被普遍认为是常见慢性病的重要危险因素,但护士很少考虑它。'
Splitstr = a.replace ('.','').split ('')
输出 =''
对于 i,枚举中的单词 (splitstr):
如果单词中的 “(”:
W = word.replace (',').replace (')',').replace ('.',' ')
对于范围内的 n (len (w) 1):
输出 = splitstr [i-n] ''输出

打印 (输出)

事实上,基廷打我

第4个答案

使用re with list-comprehension

对于 i in re.findall ('(\ (.*?\)',x _ lst = [str (len (i [1:-1)

[Re. 搜索 (r) {'i'} \ (。 {'i'} \),a)。 x _ lst 中 i 的组 (0)]
# ['家庭健康史 (FHH)' 、 '护士执业医师 (NP)']
第5个答案

这个解决方案并不特别聪明,它简单地搜索首字母 acronyms 词,然后构建一个模式来提取每个首字母 acronyms 词前面的单词:

重新导入

String = “尽管家庭健康史 (FHH) 被普遍认为是常见慢性病的重要危险因素,但护士很少考虑它。"

定义 = []

对于 re.findall (r '\ (([A-Z)?) \)' 中的首字母 acronym 词,字符串):
长度 = len (首字母 acronym 词)

匹配 = re.search (r '(?: \ w \ W) {' str (长度) r '} \ (' 首字母 acronym 词 r '\)',字符串)

定义.追加 (匹配.组 (0))

连接 (定义) 打印 (",")

输出

> Python3 测试。
护士 (NP) 家庭健康史 (FHH)
>

相关问题

通过随机抽样其他列数据创建新列 如何使用熊猫获得包括每一个组合的计数 如何有效地展开矩阵的值与小块? RegEx 匹配打开的标记, 但 XHTML 独立标记除外 根据字母计数检索括号缩写的定义 如何找到双字母并用三个字母替换? Python 不重复地从文件中打印随机行