[PYTHON] 파이썬에서 콤마와 공백으로 분리
PYTHON파이썬에서 콤마와 공백으로 분리
쉼표로 구분되는 파이썬 코드가 있지만 공백을 제거하지 못합니다.
>>> string = "blah, lots , of , spaces, here "
>>> mylist = string.split(',')
>>> print mylist
['blah', ' lots ', ' of ', ' spaces', ' here ']
차라리 다음과 같이 제거 된 공백으로 끝낼 것입니다.
['blah', 'lots', 'of', 'spaces', 'here']
목록을 반복하고 각 항목을 제거 할 수 있다는 것을 알고 있습니다. 그러나이 항목은 파이썬이므로 더 빠르고 쉽고 세련된 방법으로 생각할 수 있습니다.
해결법
-
==============================
1.목록 이해력을 사용하십시오 - for 루프처럼 읽기 쉽고 간단합니다.
목록 이해력을 사용하십시오 - for 루프처럼 읽기 쉽고 간단합니다.
my_string = "blah, lots , of , spaces, here " [x.strip() for x in my_string.split(',')]
참조 :리스트 이해력에 관한 파이썬 문서 목록 이해력에 대한 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.나는 이것이 이미 답변 된 것을 알고 있지만, 이것을 많이 끝내면, 정규 표현식이 더 좋은 방법 일 수 있습니다 :
나는 이것이 이미 답변 된 것을 알고 있지만, 이것을 많이 끝내면, 정규 표현식이 더 좋은 방법 일 수 있습니다 :
>>> import re >>> re.sub(r'\s', '', string).split(',') ['blah', 'lots', 'of', 'spaces', 'here']
\ s는 공백 문자와 일치하며 공백 문자 ''로 바꿉니다. 자세한 내용은 http://docs.python.org/library/re.html#re.sub를 참조하십시오.
-
==============================
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.분할하기 전에 문자열에서 공백을 제거하기 만하면됩니다.
분할하기 전에 문자열에서 공백을 제거하기 만하면됩니다.
mylist = my_string.replace(' ','').split(',')
-
==============================
6.
import re result=[x for x in re.split(',| ',your_string) if x!='']
이것은 나를 위해 잘 작동합니다.
-
==============================
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.map (lambda : s.strip (), mylist)은 명시 적으로 루핑하는 것보다 조금 낫다. 또는 모든 것을 한 번에 : map (lambda : s.strip (), string.split ( ',')))
map (lambda : s.strip (), mylist)은 명시 적으로 루핑하는 것보다 조금 낫다. 또는 모든 것을 한 번에 : map (lambda : s.strip (), string.split ( ',')))
-
==============================
9.
s = 'bla, buu, jii' sp = [] sp = s.split(',') for st in sp: print st
-
==============================
10.
import re mylist = [x for x in re.compile('\s*[,|\s+]\s*').split(string)
간단히, 쉼표 또는 선행 / 후행 공백이 있거나없는 공백을 적어도 하나 이상.
시도해보십시오!
-
==============================
11.map (lambda : s.strip (), mylist)은 명시 적으로 루핑하는 것보다 조금 낫다. 또는 한 번에 모든 것을 위해 :
map (lambda : s.strip (), mylist)은 명시 적으로 루핑하는 것보다 조금 낫다. 또는 한 번에 모든 것을 위해 :
map(lambda s:s.strip(), string.split(','))
그것은 기본적으로 필요한 모든 것입니다.
from https://stackoverflow.com/questions/4071396/split-by-comma-and-strip-whitespace-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] "R-essentials"에서 사용할 수없는 R 패키지를 설치하는 방법은 무엇입니까? (0) | 2018.10.10 |
---|---|
[PYTHON] 파이썬에서 빠르고 쉬운 파일 대화 상자? (0) | 2018.10.10 |
[PYTHON] 여러 키로 파이썬 사전 목록 정렬 (0) | 2018.10.09 |
[PYTHON] 파이썬 : __getitem__에서 슬라이싱 구현하기 (0) | 2018.10.09 |
[PYTHON] 파이썬에서 쓰레드 생성하기 (0) | 2018.10.09 |