2014-10-24 1 views
0

두 개의 백 슬래시가있는 텍스트 파일이 있습니다.파이썬 : 유니 코드 문자열과 이스케이프 시퀀스

f = open("example.txt") 
for line in f: 
    print(line) 

#prints "3\/4" instead of "3\\/4"!! 

은 그래서 유니 코드가 변환 될 때 같아요 예를 들어,

... 
3\\/4 
... 

나는 나는 다음과 같은 문제를 얻을, 파이썬에서이 파일을 열고 라인을 처리 할 때 파이썬 문자열, 이중 백 슬래시는 단일 백 슬래시로 이스케이프 처리됩니다 ... 어떻게 방지합니까?

내가 문자열을 만드는거야 때, 나는 이런 식으로 뭔가 할 수있어

:

x = r"3\\/4" 

을하지만 내가 문자열 변수 ("라인이 작업을 수행 할 수있는 방법을 잘 모르겠어요 "이 경우)?

감사

+1

내가 기대하는 것은'3 \\/4'이다. 파일에 이중 백 슬래시가 포함되어 있습니까? – Matthias

답변

2

당신은뿐만 아니라 r을 추가하여 파이썬의 날 문자열 표기법을 사용합니다 ..

>>> uni = ur"a\\/b" 
>>> print(uni) 
a\\/b 
+0

죄송합니다. 내 질문을 변경했습니다. 귀하의 대답은 작동하지만 약간 다른 상황이 있습니다. 제 편집 된 질문을 읽으십시오. 감사! – user3878106

+3

원시 문자열 리터럴은 문자열 값을 만드는 데만 사용됩니다. 기존 문자열을 "원시"로 설정할 수 없습니다. – hwnd

1

파일 콘텐츠, 즉 인쇄 할 무엇 것을 포함합니다. 문제 없습니다.

c:\>type x.txt 
3\\/4 
c:\>py 
Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:57:17) [MSC v.1600 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> with open('x.txt') as f: 
... for line in f: 
... print(line) 
... 
3\\/4 
0

print(line) 대신 print(repr(line))을 사용하십시오. 이 도움이 되었으면 좋겠다.

>>> a='\\anc' 
>>> print(a) 
\anc 
>>> print(repr(a)) 
'\\anc' 
관련 문제