-abc
我希望在.jpg
之前移除-abc1234567.jpg
,然后获取re.sub(r'\d(-abc).jpg$', '', string)
。我尝试了-abc123456
,但它也会替换捕获组之外的内容,并给我TIMESTAMP
。是否有可能只替换捕获组中的内容,即'-abc'?
答案 0 :(得分:2)
一种解决方案是使用正向前瞻如下。
import cv2.cv as cv
import numpy as np
import math
im=cv.LoadImage('h1.jpg', cv.CV_LOAD_IMAGE_GRAYSCALE)
pi = math.pi #Pi value
dst = cv.CreateImage(cv.GetSize(im), 8, 1)
cv.Canny(im, dst, 200, 200)
cv.Threshold(dst, dst, 100, 255, cv.CV_THRESH_BINARY)
#---- Probabilistic ----
color_dst_proba = cv.CreateImage(cv.GetSize(im), 8, 3)
cv.CvtColor(im, color_dst_proba, cv.CV_GRAY2BGR) # idem
rho=1
theta=pi/180
thresh = 100
minLength= 120 # Values can be changed approximately to fit your image edges
maxGap= 50
lines = cv.HoughLines2(dst, cv.CreateMemStorage(0), cv.CV_HOUGH_PROBABILISTIC, rho, theta, thresh, minLength, maxGap)
for line in lines:
cv.Line(color_dst_proba, line[0], line[1], cv.CV_RGB(255, 0, 0), 3, 8)
cv.ShowImage("Hough Probabilistic", color_dst_proba)
cv.WaitKey(0)
cv.SaveImage("output.jpg",color_dst_proba)
OR
您可以按如下方式使用两个捕获组。
import re
p = re.compile(ur'(\-abc)(?=\.jpg)')
test_str = u"-abc1234567-abc.jpg"
subst = u""
result = re.sub(p, subst, test_str)
答案 1 :(得分:0)
如果您只想删除jpg文件中的-abc,可以使用:
re.sub(r"-abc\.jpg$", ".jpg", string)
尽可能使用您的代码:您应该在要保留的部分周围放置'()',而不是要删除的部分。然后使用\g<NUMBER>
选择字符串的那一部分。所以:
re.sub(r'(.*)-abc(\.jpg)$', '\g<1>\g<2>', string)