복붙노트

[PYTHON] 파이썬에서 콤마와 공백으로 분리

PYTHON

파이썬에서 콤마와 공백으로 분리

쉼표로 구분되는 파이썬 코드가 있지만 공백을 제거하지 못합니다.

>>> string = "blah, lots  ,  of ,  spaces, here "
>>> mylist = string.split(',')
>>> print mylist
['blah', ' lots  ', '  of ', '  spaces', ' here ']

차라리 다음과 같이 제거 된 공백으로 끝낼 것입니다.

['blah', 'lots', 'of', 'spaces', 'here']

목록을 반복하고 각 항목을 제거 할 수 있다는 것을 알고 있습니다. 그러나이 항목은 파이썬이므로 더 빠르고 쉽고 세련된 방법으로 생각할 수 있습니다.

해결법

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

    1.목록 이해력을 사용하십시오 - for 루프처럼 읽기 쉽고 간단합니다.

    목록 이해력을 사용하십시오 - for 루프처럼 읽기 쉽고 간단합니다.

    my_string = "blah, lots  ,  of ,  spaces, here "
    [x.strip() for x in my_string.split(',')]
    

    참조 :리스트 이해력에 관한 파이썬 문서 목록 이해력에 대한 2 초의 좋은 설명.

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

    2.정규식을 사용하여 분할합니다. 참고 내가 앞장 선 공백으로 더 일반적인 경우를 만들었습니다. 목록 이해는 앞과 뒤의 null 문자열을 제거하는 것입니다.

    정규식을 사용하여 분할합니다. 참고 내가 앞장 선 공백으로 더 일반적인 경우를 만들었습니다. 목록 이해는 앞과 뒤의 null 문자열을 제거하는 것입니다.

    >>> import re
    >>> string = "  blah, lots  ,  of ,  spaces, here "
    >>> pattern = re.compile("^\s+|\s*,\s*|\s+$")
    >>> print([x for x in pattern.split(string) if x])
    ['blah', 'lots', 'of', 'spaces', 'here']
    

    ^ \ s +가 일치하지 않는 경우에도 작동합니다.

    >>> string = "foo,   bar  "
    >>> print([x for x in pattern.split(string) if x])
    ['foo', 'bar']
    >>>
    

    다음은 왜 ^ \ s +가 필요한 이유입니다.

    >>> pattern = re.compile("\s*,\s*|\s+$")
    >>> print([x for x in pattern.split(string) if x])
    ['  blah', 'lots', 'of', 'spaces', 'here']
    

    공백에있는 주요 공백을보십시오?

    설명 : Python 3 인터프리터를 사용하지만 파이썬 2에서도 결과는 같습니다.

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

    3.나는 이것이 이미 답변 된 것을 알고 있지만, 이것을 많이 끝내면, 정규 표현식이 더 좋은 방법 일 수 있습니다 :

    나는 이것이 이미 답변 된 것을 알고 있지만, 이것을 많이 끝내면, 정규 표현식이 더 좋은 방법 일 수 있습니다 :

    >>> import re
    >>> re.sub(r'\s', '', string).split(',')
    ['blah', 'lots', 'of', 'spaces', 'here']
    

    \ s는 공백 문자와 일치하며 공백 문자 ''로 바꿉니다. 자세한 내용은 http://docs.python.org/library/re.html#re.sub를 참조하십시오.

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

    4.나는 다음과 같이 덧붙였다.

    나는 다음과 같이 덧붙였다.

    지도 (str.strip, string.split ( ',')))

    그러나 그것이 Jason Orendorff에 의해 이미 언급 된 것을 보았다.

    Glenn Maynard가지도를 통해 목록 보급을 제안하는 것과 같은 대답에 대해 읽은 이유를 궁금해지기 시작했습니다. 나는 그가 성능상의 이유로 의미 있다고 생각했지만, 물론 그는 문체 나 기타 다른 것을 의미했을지도 모른다.

    그래서 루프에 세 가지 방법을 적용한 내 상자에 대한 신속한 (아마도 결함이있는) 테스트가 나타났습니다.

    [word.strip() for word in string.split(',')]
    $ time ./list_comprehension.py 
    real    0m22.876s
    
    map(lambda s: s.strip(), string.split(','))
    $ time ./map_with_lambda.py 
    real    0m25.736s
    
    map(str.strip, string.split(','))
    $ time ./map_with_str.strip.py 
    real    0m19.428s
    

    (str.strip, string.split ( ','))지도를 만드는 것은 그들이 모두 같은 야구장에있는 것처럼 보이지만.

    확실하게지도 (람다가 있거나 없음)가 성능상의 이유로 배제되어서는 안되며, 저에게는 적어도 목록 이해력만큼이나 분명합니다.

    편집하다:

    Ubuntu 10.04의 Python 2.6.5

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

    5.분할하기 전에 문자열에서 공백을 제거하기 만하면됩니다.

    분할하기 전에 문자열에서 공백을 제거하기 만하면됩니다.

    mylist = my_string.replace(' ','').split(',')
    
  6. ==============================

    6.

    import re
    result=[x for x in re.split(',| ',your_string) if x!='']
    

    이것은 나를 위해 잘 작동합니다.

  7. ==============================

    7.re (정규 표현식에서와 같이)를 사용하면 한 번에 여러 문자를 분리 할 수 ​​있습니다.

    re (정규 표현식에서와 같이)를 사용하면 한 번에 여러 문자를 분리 할 수 ​​있습니다.

    $ string = "blah, lots  ,  of ,  spaces, here "
    $ re.split(', ',string)
    ['blah', 'lots  ', ' of ', ' spaces', 'here ']
    

    이것은 예제 문자열에서 잘 작동하지 않지만 쉼표로 구분 된 목록에서는 잘 작동합니다. 예제 문자열의 경우 re.split 기능을 결합하여 regex 패턴으로 분할하면 "split-on-this-that-that"효과를 얻을 수 있습니다.

    $ re.split('[, ]',string)
    ['blah',
     '',
     'lots',
     '',
     '',
     '',
     '',
     'of',
     '',
     '',
     '',
     'spaces',
     '',
     'here',
     '']
    

    불행히도, 그게 못생긴지만, 필터 트릭을 할 것입니다 :

    $ filter(None, re.split('[, ]',string))
    ['blah', 'lots', 'of', 'spaces', 'here']
    

    짜잔!

  8. ==============================

    8.map (lambda : s.strip (), mylist)은 명시 적으로 루핑하는 것보다 조금 낫다. 또는 모든 것을 한 번에 : map (lambda : s.strip (), string.split ( ',')))

    map (lambda : s.strip (), mylist)은 명시 적으로 루핑하는 것보다 조금 낫다. 또는 모든 것을 한 번에 : map (lambda : s.strip (), string.split ( ',')))

  9. ==============================

    9.

    s = 'bla, buu, jii'
    
    sp = []
    sp = s.split(',')
    for st in sp:
        print st
    
  10. ==============================

    10.

    import re
    mylist = [x for x in re.compile('\s*[,|\s+]\s*').split(string)
    

    간단히, 쉼표 또는 선행 / 후행 공백이 있거나없는 공백을 적어도 하나 이상.

    시도해보십시오!

  11. ==============================

    11.map (lambda : s.strip (), mylist)은 명시 적으로 루핑하는 것보다 조금 낫다. 또는 한 번에 모든 것을 위해 :

    map (lambda : s.strip (), mylist)은 명시 적으로 루핑하는 것보다 조금 낫다. 또는 한 번에 모든 것을 위해 :

    map(lambda s:s.strip(), string.split(','))
    

    그것은 기본적으로 필요한 모든 것입니다.

  12. from https://stackoverflow.com/questions/4071396/split-by-comma-and-strip-whitespace-in-python by cc-by-sa and MIT license