파이썬에 빈 문자열 변수 같은 것이 있나요?
if myString == string.empty:
어쨌든 빈 문자열 값을 확인하는 가장 우아한 방법은 무엇인가요? 빈 문자열을 확인하기 위해 매번 하드 코딩을 하는 것은 좋지 않다고 생각합니다.
빈 문자열은 부울 컨텍스트에서 거짓으로 간주되는 "falsy;이므로 이렇게 하면 됩니다:
if not myString:
이 방법은 변수가 문자열이라는 것을 알고 있는 경우 선호되는 방법입니다. 변수가 다른 유형일 수도 있는 경우에는 myString == ""
를 사용해야 합니다. 부울 컨텍스트에서 거짓인 다른 값에 대해서는 진실 값 테스트 문서를 참조하세요.
PEP 8](http://www.python.org/dev/peps/pep-0008/)의 "프로그래밍 권장 사항" 섹션에서 확인할 수 있습니다:
시퀀스(문자열, 리스트, 튜플)의 경우 빈 시퀀스가 거짓이라는 사실을 사용합니다.
따라서 사용해야 합니다:
if not some_string:
또는:
if some_string:
명확히 하기 위해, 시퀀스는 비어 있는지 여부에 따라 부울 컨텍스트에서 '거짓' 또는 '참'으로 평가됩니다. '거짓' 또는 '참'과 같지 않습니다.
시험 전에 꼭 이래야겠어요 노네니스 과정의. 또한 꼭 이래야겠어요 대답하도다 사용하여 빈 문자열은 거짓값 (또는 파우시). 이 방식은 유사한 [Apache& # 39 의 스트린구티우스자이블랭크] [1] 또는 [Guava& # 39 의 스테링스트리스나우요렘프티] [2]
def isBlank (myString):
if myString and myString.strip():
#myString is not None AND myString is not empty or blank
return False
#myString is None OR myString is empty or blank
return True
def isNotBlank (myString):
if myString and myString.strip():
#myString is not None AND myString is not empty or blank
return True
#myString is None OR myString is empty or blank
return False
def isBlank (myString):
return not (myString and myString.strip())
def isNotBlank (myString):
return bool(myString and myString.strip())
[1]: # isBlank-java.lang.CharSequence https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/stringutils.html - [2]: https://google.github.io/guava/releases/19.0/api/docs/com/google/common/base/Strings.html # 이노우요렘프티 (자바드란g. 스트레이)
내가 한 번 작성했습니까 비슷한 상황이 Bartek& # 39 의 답변 및 javascript 영감을 얻었다고 한다.
def is_not_blank(s):
return bool(s and s.strip())
테스트:
print is_not_blank("") # False
print is_not_blank(" ") # False
print is_not_blank("ok") # True
print is_not_blank(None) # False
이렇게 하면 정말 솔리드로 유일한 방법은 다음과 같습니다.
if "".__eq__(myString):
다른 모든 가능한 솔루션을 구축한 사례는 문제 및 모서리까지 체크 실패할 수 있습니다.
'렌 (미스트링) = 0' 가 '는' 미스트링 않으면 해당 클래스의 객체에는 str '와' () '에서' 상속됩니다 재정의됩니다 len 메서드입니다.
마찬가지로 ',' 와 '= " 미스트링 " myString.eq (" ";)', '수' () '와' ne eq 오버라이드가 미스트링 싶다면 ' ()'.
몇 가지 이유로 '" "; = 미스트링 '도' 가 '' eq 오버라이드가 미스트링 경우 필리핀 () '.
',' 와 '는 " 미스트링 " " ";; avamer 미스트링 '이 있다. 그러나 실제로 이 두 가지 않으면 '아니다' 미스트링 문자열으로 하위 문자열 (반환되므로 모두 '거짓'). 또한 아이디 확인, 유일한 이유가 있기 때문에 작동합니까 파이썬 /dev/raw/raw1 구체화하십시오 풀링 (eschweiler-clarke 구체화하십시오 수용소에서) 를 사용하는 경우 동일한 인스턴스입니다 문자열이어야 돌아와 이다. https://stackoverflow.com/questions/1504717/why-does-comparing-strings-using-either-or-is-sometimes-produce-a-differe). 그리고 ',' 는 처음부터 스피통 에서 돌아와 " ".
아이디 확인란 에로남이네 문자열이어야 큰 문제가 되지 않는다고 하는 묘사하고 있다 (as far as I 찾을 수 있었던) 표준화된 문장열 돌아와 있다. 이론적으로, 그 뜻은 ',' 돌아와 " " 필요는 없습니다 그것이 구축상의 따라 다릅니다.
정말 이렇게 할 수 있는 유일한 방법은 필리핀 중 하나는 언급된 시작: " " .eq (미스트링), ','. 이 때문에 ' ()' 를 명시적으로 페이징됩니다 eq 빈 문자열을 방법을 통해 어떤 방법으로 미스트링 단단하게 될 수 없다 '' 의 하위 클래스 및 필리핀 재정의을 수행됨 str.
또한 파우시니스 의존하지 않을 경우, s '의 문자열으로 작동합니까 객체에는 it& 재지정합니다 # 39 bool ()' 메서드입니다.
이것은 실제로 본 적이 있지만 실제 사용 될 수 있을 뿐 아니라 관련 하도 이론적 작업 및 라이브러리를 사용하여 하위 클래스화 '는' 전과 '미스트링 " " 프레임워크와도 str,' 잘못된 출력입니다 저기예요 반환할 수 있습니다.
또한, 문자열 비교 '는' 일반적으로 사용하는 것은 아니지만, 가끔 다른 시간에 예쁜 트랩할 사악함이라 것이므로 이를 제대로 할 수 있기 때문에 문자열 풀 inet6.0 이상한 규칙요.
즉, 대부분의 경우 모든 솔루션을 제대로 작동하지 않았다. 이것은 주로 게시물로의 학술 연구.
>. 내가 찾을 하르코딩 (sic) " "; 매번 좋은 빈 문자열을 확인하는 그렇지 않은 경우도 있다.
이렇게 하면: ',' 는 foo = " ", 좋지 않은 방법입니다. ',' 은 " ", 마법 값입니다. 절대 안됩니다 견제가 마법 값 (더 널리 알려진 마법 숫자임)
설명 변수 이름을 너희는너희가 어떻게해야합니다 비교할 수 있다.
한, empty_string" " 생각하는 것 같다. 는 설명 변수 이름. It isn& # 39, t .
= do ',' 과 전에 가서 empty_string " ", 즐거운 비교할 수 있도록 변수 이름을 생각해. 이것은 변수, 설명식 name" " 것이 아니다. 것이다.
이에 따라 좋은 설명 변수 이름은 컨텍스트입니다.
양식을 작성할 수 있는 사용자 입력 값. 뭔가 작성했습니까 확인하려는 사용자가 방관하겠나.
변수 이름을 '좋은' not_filled_in 수 있습니다.
따라서 코드를 읽을 수 있는 매우
if formfields.name == not_filled_in:
raise ValueError("We need your name")
Csv 파일 및 다운로드하려는 빈 문자열 구문 분석 중인 것으로 '없음' 이와 같이 분석한다
(이후 CSV 는 텍스트 기반, '없음' 이 전혀 사용하지 않고 미리 정의된 여러_키워드 표현할 수 없습니다)
변수 이름을 '좋은' CSV_NONE 수 있습니다.
따라서 코드를 변경할 수 있는 경우 CSV 파일 및 수정이 '없음', '새로운 나타내는 것보다 다른 문자열로 " ".'
if csvfield == CSV_NONE:
csvfield = None
만약 이 코드를 올바른지 의문을 없습니다. 않니다 무엇을 어떻게 해야 하는 것이 확실합니다.
이 비교
if csvfield == EMPTY_STRING:
csvfield = None
첫 번째 질문은 특별한 치료를 하지, 왜 산아래의 슬라이드에서는 빈 문자열을?
이 빈 문자열은 항상 '없음' 간주할 수 있는 미래의 코더 말할 것입니다.
믹스 비즈니스 로직을 때문이다 (CSV 어떤 값 '없음') 와 코드 구현 (실제로 며칠입니까 비교하여)
분판 우려 둘 사이에 있어야 한다.
이에 @1290. 미안, 무리라구 포맷하십시오 블록에 대한 설명. '없음' 이 값이 없는 빈 문자열을 파이썬 및 괜찼습니다 (공간) 에 있다. 앤드루 클라크 () 는 이 올바른 답을 하나. '미스트링 않을 경우'. # 39 는 답을 구하는 것은 없으며, s 질문이예요 OP& @rouble 애플리케이션별 이런 어려움을 겪고 있는 채택할 경우 얻을 수 있습니다 () 는 " 정의마다 뭐한테 blank"; 구체화하십시오. 특히 '& # 39 얻을 수 있는 표준 비헤이비어는 str (없음)', ',' # 39 는 None& 비어 있지 않은 구체화하십시오.
그러나 치료할 경우 '없음' 와 (스페이스) 로, blank" " 합니다. 여기에 문장열 보다 나은 방법:
class weirdstr(str):
def __new__(cls, content):
return str.__new__(cls, content if content is not None else '')
def __nonzero__(self):
return bool(self.strip())
예를 들면 다음과 같다:
>>> normal = weirdstr('word')
>>> print normal, bool(normal)
word True
>>> spaces = weirdstr(' ')
>>> print spaces, bool(spaces)
False
>>> blank = weirdstr('')
>>> print blank, bool(blank)
False
>>> none = weirdstr(None)
>>> print none, bool(none)
False
>>> if not spaces:
... print 'This is a so-called blank string'
...
This is a so-called blank string
부울 @rouble 요구 사항을 깨고 걱정했던것 충족합니다 않은 상태에서 '' 비헤이비어에 써줬지
방금 사용할 경우
not var1
차이가 있을 수 없습니다 '& # 39 가 빈 문자열을 변수, & # 39 에서 부울입니다' 거짓 ',':
var1 = ''
not var1
> True
var1 = False
not var1
> True
그러나 간단한 조건을 추가하면, 차이는 데이터베이스에구성원을 스크립트입니다 했다.
var1 = False
not var1 and var1 != ''
> True
var1 = ''
not var1 and var1 != ''
> False
이 경우에 유용합니다 여기에 내가 누군가에게 빠르게 대체할 수 있는 기능을 이용하여 제작된 공백일 문장열 N/A& # 39 의 목록에 목록 (파이썬 2).
y = [["1","2",""],["1","4",""]]
def replace_blank_strings_in_lists_of_lists(list_of_lists):
new_list = []
for one_list in list_of_lists:
new_one_list = []
for element in one_list:
if element:
new_one_list.append(element)
else:
new_one_list.append("N/A")
new_list.append(new_one_list)
return new_list
x= replace_blank_strings_in_lists_of_lists(y)
print x
이것은 mysql 데이터베이스 게시할 수 있는 유용한 목록 열거합니다 받아들이지 않는 특정 분야에 대한 비워집니다 (필드) 에서 nn 으로 스키마에는. 제 경우에는 이 복합 기본 키 데 따른 것이다).
이들에게 구아바 같은 효과를 기대할 수 있다 () 는 아파치 [스트린구티우스자이블랭크] [1] 또는 [스테링스트리스나우요렘프티] [2]:
if mystring and mystring.strip():
print "not blank string"
else:
print "blank string"
[1]: # 이블랭크 http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/stringutils.html (자바드프랑스카르지케노스) [2]: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Strings.html # 이노우요렘프티 (자바드란g. 스트레이)