亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何用空格包圍文本?

如何用空格包圍文本?

狐的傳說 2024-01-24 16:18:31
我需要ATK 30在下面的文本中用空格包圍(它是一個變量,實際上我有5個變量),這樣就可以避免多個空格:s = "Product desingATK 30Trace back. TheATK 30 is a nice device. "字符串兩端可以有空格,也可以沒有,可以是字母、數字或任何東西。我可以按如下方式替換空格:s = s.replace("  ", " ")但是我怎樣才能用空格包圍我的文本呢?
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

您可以使用

re.sub(r'\s*(ATK 30)\s*', r' \1 ', text)

請參閱正則表達式演示。

細節

  • \s*- 0+ 空格

  • \b- 單詞邊界

  • (ATK 30)\1- 捕獲組 1(通過替換模式的反向引用來引用):ATK 30

  • \s*- 0+ 空格

如果您有一個單詞列表并且需要動態構建的模式,請使用

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*'執行以下操作:

  • map(re.escape, keywords)- 轉義每個關鍵字(以便(?不能干擾任務)

  • sorted(...,key=len,reverse=True)- 按長度降序排序(第一個選擇總是“獲勝”,所以這是必要的)

  • "|".join(...)- 創建交替模式。


查看完整回答
反對 回復 2024-01-24
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號