Python은 모든 문자 사이에 공간이있는 텍스트 파일을 엽니 다.

StackOverflow https://stackoverflow.com/questions/603115

  •  03-07-2019
  •  | 
  •  

문제

Python 명령으로 .csv 파일을 열 때마다fread = open('input.csv', 'r')항상 모든 문자 사이에 공백이있는 파일을 엽니 다. 동일한 명령으로 다른 텍스트 파일을 열 수 있고 올바르게로드되기 때문에 텍스트 파일에 문제가 있다고 생각합니다. 텍스트 파일이 왜 파이썬에서 이런로드되는지 아는 사람이 있습니까?

감사.

업데이트

좋아, 나는 Jarret Hardie의 포스트의 도움으로 그것을 얻었다

파일을 ASCII로 변환하는 데 사용한 코드입니다.

fread = open('input.csv', 'rb').read()
mytext = fread.decode('utf-16')
mytext = mytext.encode('ascii', 'ignore')
fwrite = open('input-ascii.csv', 'wb')
fwrite.write(mytext)

감사!

도움이 되었습니까?

해결책

재귀의 게시물은 아마도 옳을 것입니다 ... 파일의 내용은 다중 바이트 숯으로 인코딩 될 수 있습니다. 사실이라면 실제로 파이썬 밖에서 먼저 변환하지 않고 파일 자체의 파일을 읽을 수 있습니다.

다음과 같은 것을 시도하십시오.

fread = open('input.csv', 'rb').read()
mytext = fread.decode('utf-16')

'B'플래그는 파일을 이진 데이터로 읽도록합니다. 원래 인코딩을 알아야하거나 추측해야합니다 ...이 예에서는 UTF-16이지만 YMMV를 사용했습니다. 파일을 유니 코드로 변환합니다. 다중 바이트 숯이있는 파일이있는 경우 프로세스에서 많은 캐릭터를 잃을 수 있으므로 ASCII로 변환하는 것이 좋습니다.

편집 : 파일을 업로드해 주셔서 감사합니다. 파일의 전면에는 두 개의 바이트가 있으며 실제로 넓은 숯을 사용한다는 것을 나타냅니다. 궁금한 점이 있다면 일부 사람들이 제안한대로 HEX 편집기에서 파일을 열면 'ID |'와 같은 텍스트 버전에서 무언가를 볼 수 있습니다. (등). 점은 각 숯에 대한 여분의 바이트입니다.

위의 코드 스 니펫은 해당 파일로 내 컴퓨터에서 작동하는 것 같습니다.

다른 팁

파일은 일부 유니 코드 인코딩에서 인코딩되지만 ASCII로 읽습니다. 파이썬에서 파일을 사용하기 전에 파일을 ASCII로 변환하십시오.

CSV는 쉼표로 분리 된 값이있는 간단한 TXT 파일이 아닙니다. 텍스트 편집기와 함께 열면 파일이 올바르게 형성되었는지 확인하십시오.

인코딩 된 파일을 읽으려면 간단히 교체 할 수 있습니다. open ~와 함께 codecs.open.

fread = codecs.open('input.csv', 'r', 'utf-16')

Truppo가 말했듯이, 그것은 결코 나에게 절대로 오지 않았지만, 그것은 파일에 문제가 있어야합니다.

Excel/Broffice Calc에서 파일을 열고 파일로 다시 CSV로 저장하십시오.

문제가 지속되면 데이터의 하위 집합을 사용해보십시오 : Fist 10/Last 10/중간 10 줄.

좋아, 나는 Jarret Hardie의 포스트의 도움으로 그것을 얻었다

파일을 ASCII로 변환하는 데 사용한 코드입니다.

fread = open('input.csv', 'rb').read()
mytext = fread.decode('utf-16')
mytext = mytext.encode('ascii', 'ignore')
fwrite = open('input-ascii.csv', 'wb')
fwrite.write(mytext)

감사!

이진 모드 'RB'로 파일을 엽니 다. HEX 편집기에서 확인하고 NULL 패딩 '00'을 확인하십시오. Scintilla 텍스트 편집기와 같은 파일을 열면 파일에있는 문자를 확인하십시오.

빠르고 쉬운 방법은 다음과 같습니다. Python이 입력을 올바르게 구문 분석하지 않으면 ESP

sed 's/ \(.\)/\1/g'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top