簡體   English   中英

如何使用re.sub搜索和替換確切的字符和數字?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM