반응형
re.split("()+")로 문자열을 분할할 때 결과 목록에 공백이 하나 있습니다. 더 나은 방법이 있습니까?
명령어 출력을 표 형식으로 가지고 있습니다.결과 파일의 출력을 구문 분석하여 문자열에 저장하고 있습니다.한 행의 각 요소는 하나 이상의 공백 문자로 구분되므로 정규식을 사용하여 하나 이상의 공백을 일치시키고 분할합니다.그러나 모든 요소 사이에 공백이 삽입됩니다.
>>> str1 = "a b c d" # spaces are irregular
>>> str1
'a b c d'
>>> str2 = re.split("( )+", str1)
>>> str2
['a', ' ', 'b', ' ', 'c', ' ', 'd'] # 1 space element between!
이것을 하는 더 좋은 방법이 있습니까?
각 분할 후str2
목록에 추가됩니다.
을 사용하여(
,)
그룹을 캡처하는 중입니다. 그룹을 제거하기만 하면 이 문제가 발생하지 않습니다.
>>> str1 = "a b c d"
>>> re.split(" +", str1)
['a', 'b', 'c', 'd']
하지만 정규식이 필요하지 않습니다.str.split
구분 기호를 지정하지 않으면 공백으로 구분됩니다.이 경우에는 이것이 가장 좋은 방법일 것입니다.
>>> str1.split()
['a', 'b', 'c', 'd']
정규식을 정말 원했다면 이것을 사용할 수 있습니다.'\s'
공백을 나타내며 더 선명함):
>>> re.split("\s+", str1)
['a', 'b', 'c', 'd']
또는 공백이 아닌 모든 문자를 찾을 수 있습니다.
>>> re.findall(r'\S+',str1)
['a', 'b', 'c', 'd']
그str.split
메소드는 항목 사이의 모든 공백을 자동으로 제거합니다.
>>> str1 = "a b c d"
>>> str1.split()
['a', 'b', 'c', 'd']
문서는 다음과 같습니다. http://docs.python.org/library/stdtypes.html#str.split
사용할 때re.split
분할 패턴에는 캡처 그룹이 포함되며 그룹은 출력에 유지됩니다.이 옵션을 사용하지 않으려면 캡처하지 않는 그룹을 대신 사용하십시오.
사실 매우 간단합니다.사용해 보십시오.
str1="a b c d"
splitStr1 = str1.split()
print splitStr1
언급URL : https://stackoverflow.com/questions/10974932/the-result-list-contains-single-spaces-when-splitting-a-string-with-re-split
반응형
'programing' 카테고리의 다른 글
ld option -lrt가 가리키는 라이브러리는 무엇입니까(바이오닉 libc)? (0) | 2023.06.06 |
---|---|
작업:app:upploadCrashlyticsMappingFileRelease 실패한 파일 컬렉션에 정확히 하나의 파일이 포함되어야 하지만 파일이 없습니다. (0) | 2023.06.06 |
스왑 공간과 관련된 링커 성능? (0) | 2023.06.06 |
MariaDB - 다른 열 값에 따라 상수로 열 업데이트 (0) | 2023.06.06 |
vb.net 에서 에 대한 차단/종료 중첩 (0) | 2023.06.06 |