파이썬 : None을 빈 문자열로 변환하는 가장 관용적 인 방법은 무엇입니까?
다음을 수행하는 가장 관용적 인 방법은 무엇입니까?
def xstr(s):
if s is None:
return ''
else:
return s
s = xstr(a) + xstr(b)
업데이트 : str (s)을 사용하는 Tryptich의 제안을 통합하여 문자열 이외의 다른 유형 에서이 루틴을 작동시킵니다. Vinay Sajip의 람다 제안에 크게 감명을 받았지만 코드를 비교적 간단하게 유지하고 싶습니다.
def xstr(s):
if s is None:
return ''
else:
return str(s)
실제로 함수가 str()
내장 함수처럼 동작하기를 원 하지만 인수가 None 일 때 빈 문자열을 반환하려면 다음과 같이하십시오.
def xstr(s):
if s is None:
return ''
return str(s)
def xstr(s):
return '' if s is None else str(s)
값이 항상 문자열이거나 없음임을 알고있는 경우 :
xstr = lambda s: s or ""
print xstr("a") + xstr("b") # -> 'ab'
print xstr("a") + xstr(None) # -> 'a'
print xstr(None) + xstr("b") # -> 'b'
print xstr(None) + xstr(None) # -> ''
아마도 가장 짧은 것은 str(s or '')
None이 False이므로 x가 false 인 경우 "x 또는 y"는 y를 반환합니다. 자세한 설명 은 부울 연산자 를 참조하십시오 . 짧지 만 명시 적이지는 않습니다.
return s or ''
명시된 문제에 대해 잘 작동합니다!
def xstr(s):
return s or ""
def xstr(s):
return {None:''}.get(s, s)
기능적인 방법 (한 줄짜리)
xstr = lambda s: '' if s is None else s
다른 답변 중 일부 에서이 건물을 수행하는 깔끔한 한 라이너 :
s = (lambda v: v or '')(a) + (lambda v: v or '')(b)
또는 심지어 :
s = (a or '') + (b or '')
Python 2.4와 호환되어야하는 경우 위의 변형
xstr = lambda s: s is not None and s or ''
최대 기능을 사용합니다.
max(None, '') #Returns blank
max("Hello",'') #Returns Hello
매력처럼 작동합니다.) 함수의 첫 번째 매개 변수에 문자열을 넣으십시오.
def xstr(s):
return s if s else ''
s = "%s%s" % (xstr(a), xstr(b))
아래 설명 된 시나리오에서는 항상 유형 캐스팅을 피할 수 있습니다.
customer = "John"
name = str(customer)
if name is None
print "Name is blank"
else:
print "Customer name : " + name
위의 예에서 변수 customer의 값이 None 인 경우 'name'에 할당되는 동안 더 캐스팅됩니다. 'if'절의 비교는 항상 실패합니다.
customer = "John" # even though its None still it will work properly.
name = customer
if name is None
print "Name is blank"
else:
print "Customer name : " + str(name)
위의 예는 제대로 작동합니다. 이러한 시나리오는 URL, JSON 또는 XML에서 값을 가져 오거나 조작을 위해 추가 유형 캐스팅이 필요한 경우에 매우 일반적입니다.
문자열 형식에 관한 것이라면 다음을 수행 할 수 있습니다.
from string import Formatter
class NoneAsEmptyFormatter(Formatter):
def get_value(self, key, args, kwargs):
v = super().get_value(key, args, kwargs)
return '' if v is None else v
fmt = NoneAsEmptyFormatter()
s = fmt.format('{}{}', a, b)
단락 평가 사용 :
s = a or '' + b or ''
Since + is not a very good operation on strings, better use format strings:
s = "%s%s" % (a or '', b or '')
Use F string if you are using python v3.7
xstr = F"{s}"
'development' 카테고리의 다른 글
Valgrind의 출력을 파일로 리디렉션하는 방법은 무엇입니까? (0) | 2020.06.24 |
---|---|
상태 표시 줄 및 백분율을 인쇄하는 Python (0) | 2020.06.24 |
URL SCHEME으로 Instagram 앱을 열지 않는 iOS 9 (0) | 2020.06.24 |
Emacs에 (반복 명령)이 있습니까? (0) | 2020.06.24 |
PHP에서 XML을 JSON으로 변환 (0) | 2020.06.24 |