Nontype을 intor 문자열로 변환하는 방법은 무엇입니까?
나는 가지고 있습니다.Nonetype가치x일반적으로 숫자이지만 그럴 수도 있습니다.None숫자로 나누고 싶지만, Python은 다음과 같이 제안합니다.
TypeError: int() argument must be a string or a number, not 'NoneType'
어떻게 해결해야 하나요?
int(value or 0)
이는 Python이 고려하는 값을 제공하는 경우 0을 사용합니다.False없음, 0, [], "," 등과 같이 입력합니다.0이(가)이므로False0을 대체 값으로 사용해야 합니다(0이 해당 값으로 전환되는 경우).
int(0 if value is None else value)
이 항목만 대체합니다.None0으로테스트를 하고 있기 때문에None특히 다른 값을 대체 값으로 사용할 수 있습니다.
댓글 중 하나에서 다음과 같이 말합니다.
어떻게든 Nontype 값을 받았습니다. int여야 하지만 이제 Nontype 개체입니다.
만약 당신의 코드라면, 당신이 어떻게 그것을 얻는지 알아내세요.None숫자를 예상하고 그런 일이 일어나지 않도록 할 때.
다른 사람의 코드일 경우 제공되는 조건을 확인합니다.None일반적인 조건부 코드를 사용하여 이에 사용할 합리적인 값을 결정합니다.
result = could_return_none(x)
if result is None:
result = DEFAULT_VALUE
...아니면 심지어...
if x == THING_THAT_RESULTS_IN_NONE:
result = DEFAULT_VALUE
else:
result = could_return_none(x) # But it won't return None, because we've restricted the domain.
자동으로 사용할 이유가 없습니다.0여기 — 다음의 "거짓" 여부에 의존하는 솔루션None당신이 이것을 원할 것이라고 가정합니다.DEFAULT_VALUE(존재하는 경우에도) 코드의 목적에 따라 완전히 달라집니다.
이러한 상황을 처리하는 일반적인 "파이토닉" 방법은 "허락보다 용서를 구하는 것이 더 쉽다"는 의미로 EAFP로 알려져 있습니다.그것은 보통 모든 것이 괜찮다고 가정하는 코드를 작성한 다음 그것을 포장하는 것을 의미합니다.try...except일을 처리하기 위해 차단합니다. 만일의 경우에 대비하여 그렇지 않습니다.
문제에 적용된 코딩 스타일은 다음과 같습니다.
try:
my_value = int(my_value)
except TypeError:
my_value = 0 # or whatever you want to do
answer = my_value / divisor
또는 더 단순하고 조금 더 빠릅니다.
try:
answer = int(my_value) / divisor
except TypeError:
answer = 0
역으로 더 전통적인 접근법은 "뛰기 전에 보세요"를 의미하는 LBIL로 알려져 있습니다. 이것은 @Soviut와 다른 사람들이 제안한 것입니다.이 항목에 대한 자세한 내용은 이 사이트의 다른 곳에 있는 사전에 키가 있는지 여부 확인 질문에 대한 내 대답과 관련 설명을 참조하십시오.
EAFP의 한 가지 잠재적인 문제는 특히 예외가 자주 발생하는 경우(따라서 "예외적인" 경우) 코드 또는 타사 모듈의 다른 부분에 문제가 있다는 사실을 숨길 수 있다는 것입니다.
파이썬 3에서는 "or" 키워드도 사용할 수 있습니다.방법:
foo = bar or 0
foo2 = bar or ""
ㅠㅠTypeError합격을 시도할 때만 나타납니다.int() None한 (유한방법일)방)NoneType제가 알기로는).당신의 진정한 목표는 개종하는 것이 되어서는 안 된다고 말하고 싶습니다.NoneTypeint또는str 여러분이 어디서None예상대로 숫자 대신에, 그리고 그것을 고치거나 처리합니다.None적절히.
논리에서 없음이 0과 동일해야 하는 한 이러한 유형의 오류에 대해 int(x 또는 0)를 성공적으로 사용했습니다.테스트 x가 False를 반환하는 다른 경우(예: 빈 목록, 집합, 사전 또는 0 길이 문자열)에도 0으로 해결됩니다.죄송합니다, Kindall은 이미 이 답변을 했습니다.
함수에서 값을 반환하는 것을 잊은 경우 이 문제가 발생할 수 있습니다. 그런 다음 없음을 반환합니다.변수에 할당하는 모든 위치를 확인하고 함수에 반환 문이 없는 함수 호출이 있는지 확인합니다.
계산을 수행하기 전에 값이 없음이 아닌지 확인해야 합니다.
my_value = None
if my_value is not None:
print int(my_value) / 2
참조: my_value코드가 작동하고 검사가 수행 중임을 증명하기 위해 의도적으로 없음으로 설정되었습니다.
저는 파이썬 이메일 기능을 사용하는 것과 같은 문제를 겪고 있었습니다.아래는 제가 이메일 제목을 변수로 검색하려고 했던 코드입니다.대부분의 전자 메일과 변수 채우기에 적합합니다.Yahoo 등으로부터 이메일을 받았는데 발신자가 제목 줄을 채우지 않은 경우 Yahoo는 이메일에 제목 줄을 만들지 않고 함수에서 NoneType을 반환합니다.Martineau는 Soviut뿐만 아니라 정답도 제공했습니다.IMO Soviut의 대답은 프로그래밍의 관점에서 더 간결합니다. 반드시 Python의 대답은 아닙니다.다음은 기술을 보여주는 몇 가지 코드입니다.
import sys, email, email.Utils
afile = open(sys.argv[1], 'r')
m = email.message_from_file(afile)
subject = m["subject"]
# Soviut's Concise test for unset variable.
if subject is None:
subject = "[NO SUBJECT]"
# Alternative way to test for No Subject created in email (Thanks for NoneThing Yahoo!)
try:
if len(subject) == 0:
subject = "[NO SUBJECT]"
except TypeError:
subject = "[NO SUBJECT]"
print subject
afile.close()
경우에 따라 None을 int 0으로 변환하는 기능이 있으면 유용합니다.
def nz(value):
'''
Convert None to int zero else return value.
'''
if value == None:
return 0
return value
언급URL : https://stackoverflow.com/questions/3930188/how-to-convert-nonetype-to-int-or-string
'source' 카테고리의 다른 글
| C#의 URI 문자열에서 파일 이름 가져오기 (0) | 2023.08.08 |
|---|---|
| xcodebuild: 시뮬레이터 또는 장치? (0) | 2023.08.08 |
| jQuery를 사용하여 하나의 스타일 속성만 제거하는 방법은 무엇입니까? (0) | 2023.08.08 |
| ADD 명령을 사용하여 디렉터리를 다른 디렉터리로 복사 (0) | 2023.08.08 |
| 다른 모듈에서 모듈 변수를 변경하는 방법은 무엇입니까? (0) | 2023.07.19 |