第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 SequenceMatcher 在多個字符串中查找公共片段

使用 SequenceMatcher 在多個字符串中查找公共片段

交互式愛情 2024-01-27 15:20:28
我想找到以下之間的公共字符串: strings_list = ['PS1 123456 Test', 'PS1 758922 Test', 'PS1 978242 Test']以下代碼僅返回第一部分“PS1 1”,我想結(jié)果是“PS1 Test”。你能幫我一下,是否可以使用SequenceMatcher獲?。肯雀兄x您!def findCommonStr(strings_list: list) -> str:        common_str = strings_list[0]        for i in range(1, n):            match = SequenceMatcher(None, common_str, strings_list[i]).get_matching_blocks()[0]                  common_str = common_str[match.b: match.b + match.size]        common_str = common_str.strip()        return common_str
查看完整描述

2 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個贊

這是沒有 SequenceMatcher 方法的情況。如果所有字符串都遵循相同的模式,您可以將它們分成空格上的單詞。


strings_list = ['PS1 123456 Test', 'PS1 758922 Test', 'PS1 978242 Test']


test = []

for string in strings_list:

? print(string.split())

? test.append(string.split())


>>> ['PS1', '123456', 'Test']

['PS1', '758922', 'Test']

['PS1', '978242', 'Test']

現(xiàn)在您可以簡單地進(jìn)行集合交集來查找公共元素。

set(test[0]).intersection(*test[1:])


>>> {'PS1', 'Test'}


# join them to get string

' '.join(set(test[0]).intersection(*test[1:]))


>>> PS1 Test

只有當(dāng)它們遵循這種由空格分隔的模式時,這才有效。


功能:


def findCommonStr(strings_list: list) -> str:


? all_str = []

? for string in strings_list:

? ??

? ? all_str.append(string.split())


? return ' '.join(set(all_str[0]).intersection(*all_str[1:]))


查看完整回答
反對 回復(fù) 2024-01-27
?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個贊

您需要保留所有片段,而不僅僅是第一個片段:


def get_common_str(strs: List[str]) -> str:

    common_str = strs[0] if strs else ''


    for str_ in strs[1:]:

        common_str = ''.join(

            common_str[m.a:m.a + m.size]

            for m in SequenceMatcher(None, common_str, str_).get_matching_blocks()

        )


    return common_str



print(get_common_str(['PS1 123456 Test', 'PS1 758922 Test', 'PS1 978242 Test']))

這使


PS1 2 Test

這個問題很棘手,所以這種啟發(fā)式可能并不總是有效,請隨意想出另一個!看起來 SequenceMatcher 在你的案例中做得很好。我們不僅得到了常見的單詞,還得到了單詞片段,令人印象深刻。


查看完整回答
反對 回復(fù) 2024-01-27
  • 2 回答
  • 0 關(guān)注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號