2010-11-19 5 views
0

나는 멍청한 질문이 있습니다.postgresql의 백 슬래시와 관련하여

나는 '\의 1abc'

그때 나는 백 슬래시 조금 혼란 스러워요 re.sub("([0-9])",thereplacement,"2")

에서 정규식 대체이 문자열을 사용처럼 보이는 테이블의 레코드가 있습니다. 내가 돌아온 문자열은 "\\1abc"

답변

2

입니다. 대화 형으로 파이썬을 사용하고 있습니까?

일반 문자열의 경우 코드에서 백 슬래시를 이스케이프하거나 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) 

그래서 내 생각은

이 같은 예상이 구문이다.

+0

내 하위 문자열을 편집했습니다. 부주의 한 실수. 글쎄, 나는 실제로 "2"를 대체하려고 노력하고있다. 오, 저는 파이썬을 대화식으로 사용하지 않습니다. – goh

2

standard_conforming_strings을 on으로 설정하여 \ stop을 이스케이프 문자로 만들 수 있습니다.

+0

동의합니다 : standard_conforming_strings = on을 사용하는 것이 좋습니다. Btw : 9.0의 기본값입니다. –