파이썬 스크립트를 사용하여 처리하려는 데이터가 많은 파일이 있습니다.텍스트 파일에서 알 수없는 문자 제거
파일은 알 수없는 인코딩이며 메모장 ++에서 열면 'null'문자로드로 구분 된 숫자 데이터가 포함됩니다 (메모장 ++에서는 검은 색 바탕에 흰색으로 NULL로 표시됨).
이 처리하기 위해, 나는 널 문자 \의 x00에서하여 파일을 분리하고 다음 스크립트를 사용하는 경우에만 숫자 값을 검색 :로 (
stripped_data=[]
for root,dirs,files in os.walk(PATH):
for rawfile in files:
(dirName, fileName)= os.path.split(rawfile)
(fileBaseName, fileExtension)=os.path.splitext(fileName)
h=open(os.path.join(root, rawfile),'r')
line=h.read()
for raw_value in line.split('\x00'):
try:
test=float(raw_value)
stripped_data.append(raw_value.strip())
except ValueError:
pass
그러나, 때때로 파일에있는 다른 인식 할 수없는 문자가를 내가 처음 발견 한 것만 큼) - 메모장에 'EOT', 'SUB'및 'ETX'로 표시됩니다. 그것들은 파이썬에서 파일의 처리를 방해하는 것처럼 보입니다. 메모장에 분명히 더 많은 데이터가 있음에도 불구하고 파일은 그 문자로 끝난 것처럼 보입니다.
처리하기 전에 이러한 파일에서 비 ASCII 문자를 모두 제거하려면 어떻게합니까?
알 수없는 인코딩에서 파일이 올바른 경우 일부 인코딩이 적합한 것으로 보이고 해당 인코딩의 파일을 읽으려는 경우 일부 논리를 사용하려고 할 수 있습니다. 거기에 몇 가지 라이브러리/예제 코드가 있어야합니다. (메모장 + +는 특정 인코딩으로 파일을 열 때 적합하다고 생각하는 파일을 엽니 다.) 옵션이 아니라면 ... 아래 답변을 참조하십시오. – Kissaki
내가 맞는 인코딩을 찾을 수 없습니다 - 다소 이상한 형식이라고 생각합니다. – meepmeep
파일의 레이아웃과 인코딩을 결정할 때 질문을 할 경우 많은 도움이됩니다 ...(1) 파일의 소스 (어떤 웹 사이트가 어떤 소프트웨어를 생성하는지)와 같은 세부 정보 포함 (2) 파일의 처음 몇 바이트의 내용 표시 ... print repr (open ('afile.ext', 'rb'). read (200)) ' –