본문 바로가기
파이썬

파이썬 간단한 정규식 문제 : 파일에서 모든 새 줄 제거

by º기록 2021. 2. 5.
반응형

나는 파이썬에 대해 알게되었고 언어의 안과 밖을 스스로 배우기 위해 문제를 일으키고 있습니다. 내 다음 문제는 다음과 같습니다.

인터넷에서 엄청나게 많은 양의 텍스트를 복사하여 붙여 넣었지만 복사 및 붙여 넣기를 통해 큰 문자열을 분리하기 위해 몇 개의 새 줄이 추가되었습니다. 프로그래밍 방식으로이 모든 것을 제거하고 문자열을 거대한 문자 덩어리로 반환하고 싶습니다. 이것은 분명히 정규식에 대한 작업이며 (내 생각에) 파일을 구문 분석하고 개행 문자의 모든 인스턴스를 제거하면 작동하는 것처럼 들리지만 나를 위해 잘 처리되지 않는 것 같습니다.

이것에 대해 쉬운 방법이 있습니까? 다소 간단 해 보입니다.

 

해결 방법

 

두 가지 주요 대안 : 모든 것을 단일 문자열로 읽고 개행 문자를 제거합니다.

clean = open('thefile.txt').read().replace('\n', '')

또는 한 줄씩 읽고 각 줄을 끝내는 줄 바꿈을 제거한 다음 다시 결합하십시오.

clean = ''.join(l[:-1] for l in open('thefile.txt'))

전자의 대안은 아마도 더 빠를 수 있지만, 항상 그렇듯이 성능이 어떻게 될지 알고 있다고 가정하는 것보다 특정 관심이있는 경우 속도 측정 (예 : python -mtimeit 사용)을 강력히 권장합니다. . RE는 더 느릴 수 있지만 다시 한 번 추측하지 마십시오. MEASURE!

내 노트북의 특정 텍스트 파일에 대한 몇 가지 숫자는 다음과 같습니다.

$ python -mtimeit -s"import re" "re.sub('\n','',open('AV1611Bible.txt').read())"
10 loops, best of 3: 53.9 msec per loop
$ python -mtimeit "''.join(l[:-1] for l in open('AV1611Bible.txt'))"
10 loops, best of 3: 51.3 msec per loop
$ python -mtimeit "open('AV1611Bible.txt').read().replace('\n', '')"
10 loops, best of 3: 35.1 msec per loop


물론 4.3MB, 34,000 줄의 파일에서 몇 밀리 초 정도는 어떤 식 으로든 중요하지 않을 수 있습니다. 그러나 가장 빠른 접근 방식은 가장 간단한 접근 방식이기도합니다 (특히 Python에서, 특히 비정상적인 경우와는 거리가 멀습니다 .-).

 

참조 페이지 https://stackoverflow.com/questions/1249670

 

 

반응형

댓글