2017-10-16 7 views
1

바꾸거나 제거하려고하는 텍스트 문서에 일부 줄이 있습니다. 문서는 ISO-8859-1 문자 인코딩 형식입니다.ISO-8859-1 문자를 Python에 붙여 넣기 IDLE - IDLE로 변경합니다.

이 줄을 파이썬 스크립트로 복사하려고 시도하면이 줄이 바뀌지 만 일치하지 않습니다. 내가 선을 단축하고 첫 번째 큰 따옴표까지 제거하면 "그것을 잘 그것을 대체 할

을 즉

desc = [x.replace('Random text “^char”:', '') for x in desc] 

이 일치하지 않습니다 내가 입력하면 :..

desc = [x.replace('Random text :', '') for x in desc] 

그것을 잘 일치합니다^기호가 아니라는 것을 확인했습니다 분명히 IDLE은 텍스트 파일과 동일한 문자 세트를 사용하지 않아서 스크립트에 붙여 넣을 때 심볼을 변경합니다. 같은 스크립트를 처리하지 않으면이 줄을 찾는 스크립트 라이터?

+0

? 파이썬 2와 파이썬 3이 유니 코드를 어떻게 다루는 지에는 큰 차이가 있기 때문에 인코딩 문제와 관련된 질문에서 매우 중요합니다. –

+0

인코딩에'''또는'''이 없기 때문에 문서가 ISO-8859-1을 사용하고 있다고 생각하지 않습니다. 그러나 Windows 코드 페이지 1252로 인코딩 된 텍스트는 [Windows-1252] (https://en.wikipedia.org/wiki/Windows-1252)의 Wikipedia 기사에서 언급 한 것처럼 ISO-8859-1로 잘못 표시되는 것이 일반적입니다.). –

+0

파이썬 3.6.0을 사용하고 있습니다. 문서가 실제로 사용하는 인코딩이 무엇인지 어떻게 알 수 있습니까? 캐릭터가 내 스크립트에 붙여 넣을 수있는 방법이 있습니까? –

답변

1

평범한 텍스트 문서의 인코딩을 결정하는 확실한 방법은 없지만 문서의 내용을 분석하여 매우 추측 할 수있는 패키지가 있습니다. 인코딩 검색을위한 인기있는 타사 모듈은 chardet입니다. 또는 일부 인기있는 인코딩에서 시행 착오를 수동으로 사용하여 어떤 효과가 있는지 확인할 수 있습니다.

올바른 인코딩을 결정하면 대체 작업 자체가 파이썬 3에서 간단합니다. 핵심 아이디어는 open 함수에 인코딩을 전달하여 유니 코드 문자열 객체를 파일에 쓰거나 읽을 수있게하는 것입니다 파일의 유니 코드 문자열 객체. 여기에 짧은 데모가 있습니다. 터미널의 인코딩이 UTF-8로 설정된 경우이 작업이 올바르게 수행됩니다. Bash 쉘과 idle3.6에서 파이썬 3.6.0에서 테스트했습니다.

fname = 'test.txt' 
encoding = 'cp1252' 

data = 'This is some Random text “^char”: for testing\n' 
print(data) 

# Save the text to file 
with open(fname, 'w', encoding=encoding) as f: 
    f.write(data) 

# Read it back in 
with open(fname, 'r', encoding=encoding) as f: 
    text = f.read() 

print(text, text == data) 

# Perform the replacement 
target = 'Random text “^char”:' 

out = text.replace(target, 'XXX') 
print(out) 

출력을 사용하고있는 파이썬 버전

This is some Random text “^char”: for testing 

This is some Random text “^char”: for testing 
True 
This is some XXX for testing