복붙노트

[PYTHON] 파이썬 문자열에서 빈 줄을 제거하는 빠른 일렬 라이너 란 무엇입니까?

PYTHON

파이썬 문자열에서 빈 줄을 제거하는 빠른 일렬 라이너 란 무엇입니까?

불필요한 빈 줄이 포함 된 파이썬 문자열에 일부 코드가 있습니다. 문자열에서 빈 줄을 모두 제거하고 싶습니다. 이 작업을 수행하는 가장 비범 한 방법은 무엇입니까?

참고 : 일반 코드 리포터를 찾지 않고, 단 하나 또는 두 개의 라이너 만 있으면됩니다.

감사!

해결법

  1. ==============================

    1.어때?

    어때?

    text = os.linesep.join([s for s in text.splitlines() if s])
    

    text는 가능한 외부 선이있는 문자열입니까?

  2. ==============================

    2.

    "\n".join([s for s in code.split("\n") if s])
    

    첫째 :

    text = "".join([s for s in code.splitlines(True) if s.strip("\r\n")])
    

    내 마지막 버전이라고 생각해. 라인 끝을 섞는 코드에서도 잘 작동합니다. 공백이있는 행은 비어있는 것으로 간주해야한다고 생각하지 않지만, 그렇다면 간단한 s.strip ()이 대신 수행합니다.

  3. ==============================

    3.

    filter(None, code.splitlines())
    filter(str.strip, code.splitlines())
    

    ~에 해당하다

    [s for s in code.splitlines() if s]
    [s for s in code.splitlines() if s.strip()]
    

    가독성을 위해 유용 할 수 있습니다.

  4. ==============================

    4.신간선 및 비어있는 선을 제거 할 때의주의 사항

    신간선 및 비어있는 선을 제거 할 때의주의 사항

    "t"는 텍스트가있는 변수입니다. 당신은 "s"변수를 보게 될 것입니다. 그 변수는 괄호의 주 집합을 평가하는 동안에 만 존재하는 임시 변수입니다 (이 릴 파이썬의 이름은 잊어 버렸습니다)

    먼저 "t"변수를 설정하여 새로운 행을 만들 수 있습니다.

    >>> t='hi there here is\na big line\n\nof empty\nline\neven some with spaces\n       \nlike that\n\n    \nokay now what?\n'
    

    삼중 따옴표를 사용하여 변수를 설정하는 또 다른 방법이 있습니다.

    somevar="""
       asdfas
    asdf
    
      asdf
    
      asdf
    
    asdf
    """"
    

    "인쇄"없이 볼 때 다음과 같습니다.

    >>> t
    'hi there here is\na big line\n\nof empty\nline\neven some with spaces\n       \nlike that\n\n    \nokay now what?\n' 
    

    실제 줄 바꿈을 보려면 인쇄하십시오.

    >>> print t
    hi there here is
    a big line
    
    of empty
    line
    even some with spaces
    
    like that
    
    
    okay now what?
    

    모든 빈 줄을 지우라는 명령 (빈 칸 포함) :

    그래서 somelines 개행 문자는 개행 문자이고 일부는 공백 문자를 가지므로 개행 문자처럼 보입니다.

    빈 줄을 모두 없애고 싶다면 (그냥 줄 바꿈이 있거나 공백이 있으면)

    >>> print "".join([s for s in t.strip().splitlines(True) if s.strip()])
    hi there here is
    a big line
    of empty
    line
    even some with spaces
    like that
    okay now what?
    

    또는:

    >>> print "".join([s for s in t.strip().splitlines(True) if s.strip("\r\n").strip()])
    hi there here is
    a big line
    of empty
    line
    even some with spaces
    like that
    okay now what?
    

    참고 : t.strip () .trip (True)의 스트립은 단지 t.splitlines (True)를 제거 할 수 있지만 출력은 마지막 줄 바꿈을 제거하는 추가 줄 바꿈으로 끝날 수 있습니다. 마지막 부분 인 s.strip ( "\ r \ n"). strip ()과 s.strip ()의 strip ()은 실제로 개행과 개행에서 공백을 제거합니다.

    모든 빈 줄을 지우라고 명령하십시오 (그러나 공백이있는 것은 제외) :

    기술적으로 공백이있는 행은 비어있는 것으로 생각해서는 안되지만, 모두 유스 케이스와 달성하려는 대상에 따라 다릅니다.

    >>> print "".join([s for s in t.strip().splitlines(True) if s.strip("\r\n")])
    hi there here is
    a big line
    of empty
    line
    even some with spaces
    
    like that
    
    okay now what?
    

    ** 중간 스트립에 대한 참고 사항 **

    거기에있는 중간 스트립, "t"변수에 붙어있는 것은 단지 이전 노트가 말했던 것처럼 마지막 줄 바꿈을 제거합니다. 여기에 그 줄이 없다면 어떻게 될 것인가? (마지막 줄 바꿈에주의하라.)

    첫 번째 예제 (개행과 개행을 공백으로 제거)

    >>> print "".join([s for s in t.strip().splitlines(True) if s.strip("\r\n").strip()])
    hi there here is
    a big line
    of empty
    line
    even some with spaces
    like that
    okay now what?
    .without strip new line here (stackoverflow cant have me format it in).
    

    두 번째 예제 (줄 바꿈 만 제거)

    >>> print "".join([s for s in t.strip().splitlines(True) if s.strip("\r\n")])
    hi there here is
    a big line
    of empty
    line
    even some with spaces
    
    like that
    
    okay now what?
    .without strip new line here (stackoverflow cant have me format it in).
    

    끝!

  5. ==============================

    5.이 행은 공백을 제거합니다.

    이 행은 공백을 제거합니다.

    re.replace (u '(? imu) ^ \ s * \ n', u '', code)

  6. ==============================

    6.다시 모듈을 사용하여

    다시 모듈을 사용하여

    re.sub(r'^$\n', '', s, flags=re.MULTILINE)
    
  7. ==============================

    7.그리고 지금 완전히 다른 무언가를 위해 :

    그리고 지금 완전히 다른 무언가를 위해 :

    Python 1.5.2 (#0, Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)] on win32
    Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
    >>> import string, re
    >>> tidy = lambda s: string.join(filter(string.strip, re.split(r'[\r\n]+', s)), '\n')
    >>> tidy('\r\n   \n\ra\n\n   b   \r\rc\n\n')
    'a\012   b   \012c'
    

    에피소드 2 :

    이것은 1.5에서 작동하지 않습니다 :-(

    그러나 보편적 인 개행과 빈 줄을 처리 할뿐만 아니라 마지막 공백을 제거하지 않고 공백을 제거합니다 (코드 줄을 정리할 때 좋습니다). 마지막 의미있는 줄이 종료되지 않은 경우 복구 작업을 수행합니다.

    import re
    tidy = lambda c: re.sub(
        r'(^\s*[\r\n]+|^\s*\Z)|(\s*\Z|\s*[\r\n]+)',
        lambda m: '\n' if m.lastindex == 2 else '',
        c)
    
  8. ==============================

    8.

    print("".join([s for s in mystr.splitlines(True) if s.strip()]))
    
  9. from https://stackoverflow.com/questions/1140958/whats-a-quick-one-liner-to-remove-empty-lines-from-a-python-string by cc-by-sa and MIT license