나는 멍청한 질문이 있습니다.postgresql의 백 슬래시와 관련하여
나는 '\의 1abc'
그때 나는 백 슬래시 조금 혼란 스러워요 re.sub("([0-9])",thereplacement,"2")
에서 정규식 대체이 문자열을 사용처럼 보이는 테이블의 레코드가 있습니다. 내가 돌아온 문자열은 "\\1abc"
나는 멍청한 질문이 있습니다.postgresql의 백 슬래시와 관련하여
나는 '\의 1abc'
그때 나는 백 슬래시 조금 혼란 스러워요 re.sub("([0-9])",thereplacement,"2")
에서 정규식 대체이 문자열을 사용처럼 보이는 테이블의 레코드가 있습니다. 내가 돌아온 문자열은 "\\1abc"
입니다. 대화 형으로 파이썬을 사용하고 있습니까?
일반 문자열의 경우 코드에서 백 슬래시를 이스케이프하거나 r "..."(docs에 링크)을 사용해야합니다. 만약 당신이 interactivly python을 실행하고 데이터베이스에서 결과를 변수에 할당하지 않으면, 그것의 __repr__()
메서드를 사용하여 인쇄됩니다.
>>> s = "\\1abc"
>>> s
'\\1abc' # <-- How it's represented in Python code
>>> print s
\1abC# <-- The actual string
또한 re.sub는 조금 이상합니다. 1) 아마도 패턴으로 [0-9]를 의미 했을까요? (한자리 매치). 인수가 thereplacement
인 경우 아마 인수도 switche입니다.
>>> s_in = yourDbMagic() # Which returns \1abc
>>> s_out = re.sub("[0-9]", "2", s_in)
>>> print s_in, s_out
\1abc \2abc
편집 : 시도 더 나은 탈출/표현을 설명하기
re.sub(pattern, repl, string, count=0)
그래서 내 생각은
이 같은 예상이 구문이다.standard_conforming_strings을 on으로 설정하여 \ stop을 이스케이프 문자로 만들 수 있습니다.
동의합니다 : standard_conforming_strings = on을 사용하는 것이 좋습니다. Btw : 9.0의 기본값입니다. –
내 하위 문자열을 편집했습니다. 부주의 한 실수. 글쎄, 나는 실제로 "2"를 대체하려고 노력하고있다. 오, 저는 파이썬을 대화식으로 사용하지 않습니다. – goh