문자열에 공백 만 포함되어 있는지 확인


220

문자열에 공백 만 포함되어 있는지 테스트하려면 어떻게해야합니까?

문자열 예 :

  • " " (공간, 공간, 공간)

  • " \t \n " (공간, 탭, 공간, 줄 바꿈, 공간)

  • "\n\n\n\t\n" (개행, 개행, 개행, 탭, 개행)

답변:


312

str.isspace()방법을 사용하십시오 :

반환 True문자열에 공백 만 문자가 적어도 하나 개의 문자가있는 경우 False그렇지.

유니 코드 문자 데이터베이스 ( unicodedata 참조 )에서 일반 범주가 Zs (“구분자, 공백”)이거나 양방향 클래스가 WS, B 또는 S 중 하나 인 경우 문자는 공백 입니다.

빈 문자열을 처리하기 위해 특별한 경우와 결합하십시오.

또는 str.strip()결과가 비어 있는지 확인하고 사용할 수 있습니다 .


문자열이 비 분리 공백, charCode 값이 포함 된 경우이 파이썬 2.4에서 실패 U+00A0또는 ALT+160. 그러나 Python 2.7에서는 고정되어 있습니다.
Kumba

18
이 확인하지 않음을 명심하십시오 None, 또는''
Parth Mehrotra

1
python 2.7.13에서 isspace ()는 비 분리 공간을 공간으로 간주합니다. 좋은!
Iching Chang

빈 문자열도 제외 할 수도 있습니다.이 경우 다음을 수행 할 수 있습니다.if len(str) == 0 or str.isspace():
Joe

@Joe len(my_str) == 0도 쓸 수 있습니다 not my_str.
AMC

55
>>> tests = ['foo', ' ', '\r\n\t', '', None]
>>> [not s or s.isspace() for s in tests]
[False, True, True, True, True]

왜 선택은 반환해야합니다 True위해 None?
AMC

32

isspace()방법 을 사용하고 싶습니다

str. isspace ()

문자열에 공백 문자 만 있고 하나 이상의 문자가 있으면 true를, 그렇지 않으면 false를 반환합니다.

그것은 모든 문자열 객체에 정의되어 있습니다. 다음은 특정 사용 사례에 대한 사용 예입니다.

if aStr and (not aStr.isspace()):
    print aStr

이것은 현재 최고 답변과 동일한 솔루션이 아닌가 ?
AMC



6

split () 메소드로 제공된 목록의 길이를 확인하십시오.

if len(your_string.split()==0:
     print("yes")

또는 strip () 메소드의 출력을 null과 비교하십시오.

if your_string.strip() == '':
     print("yes")

1
문자열을 분할 할 이유가 없으며 문자열에서 len()작동합니다. 또한 OP는 빈 문자열을 테스트하지 않고 모든 공백 인 문자열을 테스트하도록 요청했습니다. 두 번째 방법은 나쁘지 않습니다. 또한 조건부 주변의 괄호는 파이썬에서 필요하지 않습니다.
NeilK

1
이상하게도, 첫 번째 방법은 실제로 공백 이 없는 문자 보다 확인하기에 좋은 방법 ==0입니다.==1
Mad Physicist

if len(your_string.split())==0:-> if not your_string.split():, if your_string.strip() == '':-> if not your_string.strip():. 어쨌든 첫 번째는 기존 솔루션보다 열등하고 두 번째는 이미 다른 답변에서 언급되었습니다.
AMC

3

다음은 모든 경우에 작동해야하는 답변입니다.

def is_empty(s):
    "Check whether a string is empty"
    return not s or not s.strip()

변수가 없음 인 경우 변수가 중지되고 not s이후부터 평가되지 않습니다 not None == True. 분명히이 strip()방법은 일반적인 탭, 줄 바꿈 등을 처리합니다.


not None == True그냥 말하는 것이 더 명확하기 때문에None is False . 또한 ==이러한 비교에는 사용하지 않아야합니다.
AMC

2

귀하의 시나리오에서 빈 문자열은 실제로 비어있는 문자열이거나 모든 공백을 포함하는 문자열입니다.

if(str.strip()):
    print("string is not empty")
else:
    print("string is empty")

이것은 확인하지 않습니다 None


기존 답변으로 이미 다루지 않았습니까?
AMC

2

나는 다음을 사용했다.

if str and not str.isspace():
  print('not null and not empty nor whitespace')
else:
  print('null or empty or whitespace')

null 당신은 의미 None합니까?
AMC

1

문자열이 공백 또는 개행인지 확인하려면

이 간단한 코드를 사용하십시오

mystr = "      \n  \r  \t   "
if not mystr.strip(): # The String Is Only Spaces!
    print("\n[!] Invalid String !!!")
    exit(1)
mystr = mystr.strip()
print("\n[*] Your String Is: "+mystr)

1

C # 문자열 정적 메소드와의 유사성은 isNullOrWhiteSpace입니다.

def isNullOrWhiteSpace(str):
  """Indicates whether the specified string is null or empty string.
     Returns: True if the str parameter is null, an empty string ("") or contains 
     whitespace. Returns false otherwise."""
  if (str is None) or (str == "") or (str.isspace()):
    return True
  return False

isNullOrWhiteSpace(None) -> True // None equals null in c#, java, php
isNullOrWhiteSpace("")   -> True
isNullOrWhiteSpace(" ")  -> True

당신은 그냥return (str is None) or (str == "") or (str.isspace())
알렉산더-복원 모니카

아, 그리고 모두 None""그럼 이제 수, falsy 단지 :return not str or str.isspace()
알렉산더 - 분석 재개 모니카

이것은 매우 일관 적입니다.
AMC

@AMC는 이것을 자세히 설명 할 수 있습니까, 나는 당신이 말하려는 것을 이해하지 못합니다.
광대역
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.