1 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用
re.sub(r'\s*(ATK 30)\s*', r' \1 ', text)
請(qǐng)參閱正則表達(dá)式演示。
細(xì)節(jié)
\s*
- 0+ 空格\b
- 單詞邊界(ATK 30)
\1
- 捕獲組 1(通過(guò)替換模式的反向引用來(lái)引用):ATK 30
\s*
- 0+ 空格
如果您有一個(gè)單詞列表并且需要?jiǎng)討B(tài)構(gòu)建的模式,請(qǐng)使用
import re
s = "Product desingATK 30Trace back. TheATK 30 is a nice device. "
keywords = ['ATK 30', 'PPK 50', 'HJF12 10']
pattern = fr'\s*({"|".join(sorted(map(re.escape, keywords),key=len,reverse=True))})\s*'
print(pattern) # => \s*(HJF12\ 10|ATK\ 30|PPK\ 50)\s*
print(re.sub(pattern, r' \1 ', s))
# => Product desing ATK 30 Trace back. The ATK 30 is a nice device.
在這里,fr'\s*({"|".join(sorted(map(re.escape, keywords),key=len,reverse=True))})\s*'
執(zhí)行以下操作:
map(re.escape, keywords)
- 轉(zhuǎn)義每個(gè)關(guān)鍵字(以便(
或?
不能干擾任務(wù))sorted(...,key=len,reverse=True)
- 按長(zhǎng)度降序排序(第一個(gè)選擇總是“獲勝”,所以這是必要的)"|".join(...)
- 創(chuàng)建交替模式。
添加回答
舉報(bào)