2012-05-09 3 views
1

여기 파이썬에 대해 많이 신경 쓰고있는 문제가 있습니다. 여기에 :파이썬을 사용하여 파일에서 문자열을 읽는 동안 예기치 않게 큰 따옴표 ("xxx")가 두 개의 큰 따옴표 (""xxx "")로 바뀝니다.

파일에서 일부 문자열을 읽으려고합니다. 파일은 현지화 된 문자열의 한 종류가 각 파일에 들어있는 .rc 접미사입니다. 다른 언어를 기반으로 해독 할 다른 코드 페이지를 사용했습니다. 여기서 예를 들어 불어 파일 만 가져오고 코드 페이지는 1252입니다. 슬프게도 이중 따옴표가있을 때마다 파이썬 셸에서 문자열을 인쇄 할 때 예기치 않게 두 개의 큰 따옴표가 있습니다.

.RC 소스 파일의 라인 :

라 fonction "테스트 드 télécopie"vérifie.

파이썬 쉘에서 출력 문자열 :

라 fonction ""테스트 드 télécopie ""vérifie.

일부 활동은 내가 그랬어 :

f = open(filename,"r")   #Used to open .rc source file 
for strline in f.readlines(): #Used to read file line by line 
    print strline    #Used to print in Python shell 

추가 정보 :

에게. .rc 소스 문자열의 큰 따옴표 16 진 코드는 다음과 같습니다. 

b. 웹 브라우저에서 .rc 소스 파일을 열면 예기치 않게 두 개의 큰 따옴표가 표시됩니다.

c. .rc 소스 파일은 기밀이므로 여기에 첨부하지 않았습니다.

d. 운영체제 : Enu Win7 x64 \ Python : v2.7

저는 파이썬의 초보자입니다. 어떤 아이디어라도 정말 감사 할 것입니다.

최고 감사합니다, )

+0

'print repr (strline)'을 시도하고 그 내용을 알려주십시오. – georg

+0

Re-thg435 : print repr (strline)을 시도했지만 아무 것도 변경되지 않았습니다. 여전히 두 개의 큰 따옴표가 표시됩니다. – Mark

+0

'print repr (strline)'에 무엇을 복사하여 여기에 붙여 넣을 수 있습니까? – georg

답변

2

모든 오해는 내가 아니에요에서 온다 .rc 파일에 익숙하다. (나는 C++을 처음 사용하지 않았다.) 개발자가 문자열을 어떻게 처리 하는가? 내 대답이 너무 보이지 않으면 나를 때 리지 마라. :)

관련 개발자와 대화를 한 후 .rc 파일 작성자가 문자열의 큰 따옴표를 처리하는 데 사용하는 메커니즘 인 것으로 확인되었습니다.

아래 문자열과 같습니다. GUI가 예상합니다. "Mark"는 어떻습니까?

.rc (또는 웹 브라우저)에서 - "안녕하세요", "마크" ""?

.rc 파일 작성자는 더 큰 따옴표를 한 개 더 추가하여 문자열에있는 원래의 문자를 둘러싸 기 위해 문자열을 GUI에 표시하려면이 문자열을 인식하기 위해 다음과 같이 인식하지 않습니다 : - "잘 있었 니?" " ==> "잘 있었 니?"Mark "?"==> GUI가 올바르게 표시 할 수없는 엉뚱한 큰 따옴표 일치 일 것입니다.

그래서 원하는 필터를 얻으려면이 추가 큰 따옴표를 제거하는 필터를 추가하십시오. 그리고 나는 파이썬 사용자들에게는 쉽다라고 생각한다.

전문적인 답변이 아니지만 같은 문제에 직면 한 사람들이 다른 방식으로 생각하도록하겠습니다.

나는 정말로 상기의 문제점을 파악하는 데 도움을 준 모든 사람에게 감사드립니다.

0
콘솔이 아닌 다른 코드 페이지를 사용하는

1252

편집 :

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

str=u"""La fonction "Test de télécopie" vérifie.""" 
print str 
flat=str.encode("cp1252") 
convts=unicode(flat, encoding="cp850") #Change the testing code page here. 
print convts 
+0

: OS는 ENU Win7x64입니다. 또한 "IDLE 환경 설정 - 일반 탭", "Defualt 소스 인코딩"은 "없음"을 선택했습니다. 나는 당신이 이것을 참조했는지 확신 할 수 없다. 더 설명해 주시겠습니까? – Mark

+0

@ 마크, 몇 가지 코드 페이지에 대한 테스트를했기 때문에 추측이 잘못 될 수있어서 유감입니다. 이제 나는 thg435의 방법 (파일을 hexdump)을 선호합니다. http://www.science.co.il/language/Character-Code.asp?s=1252에 따르면 3 개의 16 진수 (5, 14, 15)가 따옴표에 해당합니다. 에디터/뷰어는 모든 뷰어를 지원하지는 않지만 뷰포트는 뷰포트/뷰어 모두를 지원합니다. – wuliang

+0

실제로 비슷한 도구 XVI32 [링크] http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm 16 진수 코드를보고 22 시도했다. 나는 복사 및 과거의 소스 문자열 않았다 .rc 파일에서 thg345가 참조한 것을 사용하여 hexdump로 변환하고, 큰 따옴표로 22를 얻었습니다. – Mark