programing

대체 패턴에서 그룹 캡처에 대한 역참조 처리

javajsp 2023. 8. 7. 22:20

대체 패턴에서 그룹 캡처에 대한 역참조 처리

나는 그 끈을 가지고 싶습니다.0.71331, 52.25378그리고 돌아옴0.71331,52.25378즉, 숫자, 쉼표, 공백 및 숫자를 찾고 공백을 제거합니다.

현재 코드는 다음과 같습니다.

coords = '0.71331, 52.25378'
coord_re = re.sub("(\d), (\d)", "\1,\2", coords)
print coord_re

하지만 이것은 나를0.7133,2.25378내가 뭘 잘못하고 있는 거지?

정규식에 원시 문자열을 사용해야 합니다. 다음을 시도하십시오.

coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)

현재 코드를 사용하면 대체 문자열의 백슬래시가 숫자에서 벗어나므로 모든 일치 항목을 다음과 같은 값으로 바꿉니다.chr(1) + "," + chr(2):

>>> '\1,\2'
'\x01,\x02'
>>> print '\1,\2'
,
>>> print r'\1,\2'   # this is what you actually want
\1,\2

문자열에 백슬래시를 남겨 두고 싶을 때마다r접두사 또는 각 백슬래시 이스케이프(\\1,\\2).

Python은 다음을 해석합니다.\1ASCII 값이 1인 문자로, 이를 에 전달합니다.sub.

파이썬이 해석하지 않는 원시 문자열 사용\.

coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)

자세한 내용은 설명서의 첫머리에 설명되어 있습니다.

언급URL : https://stackoverflow.com/questions/8157267/handling-backreferences-to-capturing-groups-in-re-sub-replacement-pattern