2010-03-11 6 views
29

을 파이썬으로 변환하면, 문자열을 보유하고있는 변수에 다른 원시 문자열 변수로 변환하는 빠른 방법이 있습니까? 원시 문자열 파이썬

다음 코드

def checkEqual(x, y): 
    print True if x==y else False 

line1 = "hurr..\n..durr" 
line2 = r"hurr..\n..durr" 
line3 = "%r"%line1 

print "%s \n\n%s \n\n%s \n" % (line1, line2, line3) 

checkEqual(line2, line3)  #outputs False 

checkEqual(line2, line3[1:-1]) #outputs True 

내가 지금까지 발견 한 가장 가까운 단일 인용 부호 안에이기는하지만 원시 문자열을 반환 보인다 %의 R 서식 플래그입니다 ... 후 어떤 메신저를 설명해야한다. 이 일을 line3 = raw(line1)처럼 쉽게 할 수 있습니까?

+0

'캐스트'라는 단어를 사용하지 마십시오. 파이썬에는 그런 것이 없습니다. 원시 문자열을 다른 문자열로 "변환"하거나 "변환"하려고합니다. "빠르다"는 것은 그것과 아무 관련이 없습니다. –

+2

'checkEqual'은 간단히'return x == y '일 수 있습니다. – pradyunsg

+1

감사합니다 @Schoolboy가이를 지적했습니다. 'Print True True else if False'와 같이 중복되는 것을보기 위해 항상 나를 불살 랐다./ – OozeMeister

답변

61
"hurr..\n..durr".encode('string-escape') 
+6

좋은 점. 다양한 코덱을 사용하는 str.encode()는 정확히 내가 한 것입니다. '유니 코드 - 이스케이프'는 실제로 내가 가지고있는 또 다른 문제를 해결합니다. cheers – dave

+1

'\ w' 등에서는 작동하지 않습니다. –

+7

Python3.3에서 오류가 발생했습니다. LookupError : 알 수없는 인코딩 : 문자열 이스케이프 – Erik

3

또 다른 방법 :

>>> s = "hurr..\n..durr" 
>>> print repr(s).strip("'") 
hurr..\n..durr 
+0

's'에'''가있는 경우 작동하지 않습니다 –

+0

' ''가 문자열의 중간에 있으면 좋지만 확실히 견고하지는 않습니다 (예 : 유니 코드 문자열의 경우) . – Seth

0
>>> v1 = 'aa\1.js' 
>>> re.sub(r'(.*)\.js', repr(v1).strip("'"), 'my.js', 1) 
'aa\\x01.js 

그러나

>>> re.sub(r'(.*)\.js', r'aa\1.js', 'my.js', 1) 
'aamy.js' 

그리고

>>> re.sub(r'(.*)\.js', raw(v1), 'my.js', 1) 
'aamy.js' 

그리고 더 나은 원시 방법 impleme 이 인코딩하는 방법을 보였다보다도 ntation

def raw(text): 
    """Returns a raw string representation of text""" 
    return "".join([escape_dict.get(char,char) for char in text]) 
1

.

'hurr..\n..durr'.encode('string-escape') 

이렇게하면 디코딩됩니다.

r'hurr..\n..durr'.decode('string-escape') 

예.

In [12]: print 'hurr..\n..durr'.encode('string-escape') 
hurr..\n..durr 

In [13]: print r'hurr..\n..durr'.decode('string-escape') 
hurr.. 
..durr 

이를 통해 양 방향에서 하나에 "캐스트/trasform 원시 문자열". 실용적인 경우는 json에 원시 문자열이 포함되어 있고 멋지게 인쇄하려고하는 경우입니다.

{ 
    "Description": "Some lengthy description.\nParagraph 2.\nParagraph 3.", 
    ... 
} 

나는 이렇게 할 것입니다.

print json.dumps(json_dict, indent=4).decode('string-escape')