[英]How to search and replace exact character and number using re.sub?
我正在嘗試在python中使用正則表達式在"p1 p2 p3 p10 p11 p12"
搜索"p1"
"p1 p2 p3 p10 p11 p12"
並將其替換為"hi"
以下是我的Python代碼:
import re
x = "p1 p2 p3 p10 p11 p12"
data = "p1"
y = re.sub(data,'hi',x)
print (y)
電流輸出→ hi p2 p3 hi0 hi1 hi2
。
所需的輸出→ hi p2 p3 p10 p11 p12
。
請幫助我理解為什么我沒有得到想要的輸出。
使用斷字。 正則表達式應使用原始字符串,因此您不必轉義反斜杠。
import re
x = "p1 p2 p3 p1 p10 p11 p12 p1"
data = "p1"
y = re.sub(r'\b' + data + r'\b','hi',x)
print (y)
輸出:
hi p2 p3 hi p10 p11 p12 hi
您要搜索的不是data
而是data+" "
。
import re
x = "p1 p2 p3 p10 p11 p12"
data = "p1"
y = re.sub(data+" ", "hi"+" ", x)
# to replace at the end too:
if x[-len(data):] == data:
y = y[:-len(data)] + "hi"
print (y) # hi p2 p3 p10 p11 p12
您要替換字符串中的“ p1”,這也意味着也替換了“ p11”的第一部分。 您應該一直在尋找“ p1”,而不用替換“ p11”。 但是,既然我們要在結尾處用空格替換,我們需要使插入的字符串在結尾處也有空格。 否則,我們將刪除空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.