gpt4 book ai didi

python - 在python中查找字符串中的缩写

转载 作者:行者123 更新时间:2023-11-28 21:21:58 33 4
gpt4 key购买 nike

假设我们有几个可能的字符组合:

mystr = 'NRWTD'
my2str = RAWBC'

现在我所知道的是:

vdCacheType = {'AWB' : 'Always WriteBack', 'WB': 'Write Back',
'NR': 'No Read Ahead', 'Ra': 'Read Ahead Adaptive',
'WT': 'Write Through', 'R' : 'Read Ahead Always',
'D': 'Direct IO', 'C': 'Cached' }

如您所见,该字符串是缩写字符的组合。我的问题是如何获取一个字符串,并检查是否可以在字典中找到字符组合。

我已经尝试过:

for x in vdCacheType:
if x in mystr:
print x # Here i would save the found abbr. in a list for later use
mystr = mystr.strip(x)

问题是对于 NRWTD,它发现:

Found Char:  R
New String: NRWTD
Found Char: WT
New String: NRWTD
Found Char: NR
New String: WTD
Found Char: D
New String: WT

我的意图是返回:

No Read Ahead, Write Through, Direct

而不是 NRWTD如果有更好的方法解决这个问题,我将不胜感激。无论如何谢谢!

最佳答案

沿着以下行找到可能最长的子串:

vdCacheType = {'AWB' : 'Always WriteBack', 'WB': 'Write Back',
'NR': 'No Read Ahead', 'Ra': 'Read Ahead Adaptive',
'WT': 'Write Through', 'R' : 'Read Ahead Always',
'D': 'Direct IO', 'C': 'Cached' }

import re
rx = re.compile('|'.join(sorted(vdCacheType, key=len, reverse=True)))
print ', '.join([vdCacheType[m] for m in rx.findall('NRWTD')])
# No Read Ahead, Write Through, Direct IO

RAWBC 输出为:始终预读,始终回写,缓存

根据区分大小写以及整个文本是否应该是一个完整的首字母缩略词(或一系列)进行调整。

关于python - 在python中查找字符串中的缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377162/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com