여러 줄 문자열을 반복되는 공백없이 한 줄짜리 문자열로 접을 수있는 교차 플랫폼 라이브러리 함수가 있습니까?파이썬에서 문자열 붕괴 라이브러리 함수가 있습니까?
저는 아래에 몇 가지 팁을 제안했지만, C에서 최적화 된 표준 함수가 있는지 궁금합니다.
def collapse(input):
import re
rn = re.compile(r'(\r\n)+')
r = re.compile(r'\r+')
n = re.compile(r'\n+')
s = re.compile(r'\ +')
return s.sub(' ',n.sub(' ',r.sub(' ',rn.sub(' ',input))))
P. 좋은 관찰에 감사드립니다. ' '.join(input.split())
이 승자가되는 것 같습니다. 실제로는 실제로 제 2의 경우 약 2 배 빠르게 실행됩니다. 사전에 컴파일 된 r'\s+'
정규식으로 검색을 대체하는 것과 비교됩니다.
질문 제목에 "크로스 플랫폼"이있는 이유는 무엇입니까? 파이썬의 거의 모든 것들은 OS에 특정한 것들을 제외하고는 크로스 플랫폼이다. 이것은 명확하게 OS에 한정되지 않습니다. –
좋은 지적. 나는 '\ n'문자가 파이썬에서 크로스 플랫폼이라는 것을 몰랐다. 나는 '\ n'이 말 그대로 특별한 ascii char를 의미한다고 생각했다. – Evgeny
그것은 문자 그대로 특별한 ascii char를 의미합니다. 그 문자는 모든 플랫폼에서 동일합니다 - 개행 문자. –