ValueError: 기본이 10인 int()의 리터럴이 잘못되었습니다.
이 에러가 발생하는 이유는 무엇입니까?
ValueError: 기본 10: '의 int()에 대한 리터럴이 잘못되었습니다.
에러의 끝에는, 해석하려고 한 값이 표시됩니다.
좀 더 명확한 예로서.
>>> int('55063.000000')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '55063.000000'
이 경우 빈 문자열을 정수로 해석하려고 했습니다.
위의 float 예제에서는 두 번 변환해야 합니다.
>>> int(float('55063.000000'))
55063
다음은 python에서 완전히 허용됩니다.
- 의
int
float
- 의
float
- passing에
int
- 것
float
이런 게 요.ValueError
플로트의 스트링 표현을 전달하면int
또는 정수 이외의 문자열(빈 문자열 포함)을 나타냅니다. int
@katyhuff가 위에서 지적한 바와 같이 먼저 플로트로 변환한 다음 정수로 변환할 수 있습니다.
>>> int('5')
5
>>> float('5.0')
5.0
>>> float('5')
5.0
>>> int(5.0)
5
>>> float(5)
5.0
>>> int('5.0')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '5.0'
>>> int(float('5.0'))
5
파일을 반복하고 int로 변환하는 피토닉 방식:
for line in open(fname):
if line.strip(): # line contains eol character(s)
n = int(line) # assuming single integer on each line
당신이 하려는 것은 조금 더 복잡하지만 여전히 간단하지 않다.
h = open(fname)
for line in h:
if line.strip():
[int(next(h).strip()) for _ in range(4)] # list of integers
이렇게 하면 한 번에 5개의 회선을 처리할 수 있습니다.h.next()
next(h)
Python 2.6 다 python python python python python python python python python python
★★★★★★★★★★★★★★★★★★★★★★★의 이유ValueError
때문이다int
에서는 빈 문자열을 정수로 변환할 수 없습니다.하기 전에 의 내용을 해야 합니다
try:
int('')
except ValueError:
pass # or whatever
거리일Python은 숫자를 플로트로 변환합니다.만으로 동작합니다.float 를 、 로 、 float 。output = int(float(input))
그 이유는 int에 빈 문자열 또는 인수로 문자열이 입력되기 때문입니다.빈 문자 또는 알파벳 문자가 포함되어 있는지 확인합니다.문자가 포함되어 있는 경우는, 그 부분을 무시해 주세요.
이 에러가 발생하는 이유는 공백 문자를 정수로 변환하려고 하기 때문입니다.이것은 완전히 불가능하고 제한적입니다.그렇기 때문에 이 에러가 발생하고 있습니다.
코드를 확인하고 수정하십시오. 정상적으로 작동합니다.
그래서 만약에
floatInString = '5.0'
쓸 수 요.int
floatInInt = int(float(floatInString))
다음 회선에 문제가 있습니다.
while file_to_read != " ":
빈 문자열은 찾을 수 없습니다.공백 한 개로 구성된 문자열을 찾습니다.아마도 이것은 당신이 찾고 있는 것이 아닐 것이다.
다른 사람의 충고를 들어라.이것은 매우 관용적인 python 코드가 아니기 때문에 직접 파일을 반복하면 훨씬 명확해질 것입니다만, 이 문제도 주의할 필요가 있다고 생각합니다.
( 「 」 「 」 「 」 「 」 ).split()
을(를) 한 파일에 보존합니다을(를) 심플 파일에 저장합니다.도 같은 , 그 는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.split()
올바르게 기입되지 않았습니다(정확한 처리).
나는 최근에 이 대답들 중 어느 것도 효과가 없는 경우를 우연히 만났다.CSV 데이터에 눌바이트가 혼재되어 있고, 그 눌바이트가 삭제되지 않았습니다.따라서 삭제 후 숫자 문자열은 다음과 같은 바이트로 구성됩니다.
\x00\x31\x00\x0d\x00
이에 대응하기 위해 다음과 같이 했습니다.
countStr = fields[3].replace('\x00', '').strip()
count = int(countStr)
...fields는 행을 분할한 CSV 값 목록입니다.
readings = (infile.readline())
print readings
while readings != 0:
global count
readings = int(readings)
그 코드에 문제가 있어요. readings
파일에서 읽은 새 행입니다. 문자열입니다.따라서 0과 비교해서는 안 됩니다.또한 정수가 아닌 경우에는 정수로 변환할 수 없습니다.예를 들어, 빈 행은 여기서 오류를 발생시킵니다(확실히 확인).
글로벌 카운트가 필요한 이유는 무엇입니까?Python에서는 확실히 나쁜 디자인이네요.
, 를 한 할 때 이 할 수도 ..input()
예를 들어 HackerRank Bon-Appet에서 이 문제를 해결하고 있는데 컴파일 중에 다음 오류가 발생하였습니다.
에 한 .map()
★★★★★★ 。
당신의 답은 이 선 때문에 에러를 던지는 것이다.
readings = int(readings)
- 여기서는 문자열을 base-10이 아닌 int 타입으로 변환하려고 합니다.변환할 수 있는 것은 base-10일 경우뿐입니다.변환하지 않으면 ValueError가 느려지고 base 10을 가진 int()에 대해 유효하지 않은 리터럴이 됩니다.
에 대한 를 """로이었습니다.if
빈 문자열이 "truthy"가 아니라는 점을 이용하여 다음 명령을 수행합니다.
다음 두 가지 입력 중 하나가 주어진 경우:
input_string = "" # works with an empty string
input_string = "25" # or a number inside a string
다음 체크를 사용하여 빈 문자열을 안전하게 처리할 수 있습니다.
if input_string:
number = int(input_string)
else:
number = None # (or number = 0 if you prefer)
print(number)
파일을 읽는 프로그램을 만들고 있는데 파일의 첫 번째 줄이 비어 있지 않으면 다음 네 줄을 읽습니다.이러한 행에 대해 계산이 수행된 후 다음 행이 읽힙니다.
Something like this should work:
for line in infile:
next_lines = []
if line.strip():
for i in xrange(4):
try:
next_lines.append(infile.next())
except StopIteration:
break
# Do your calculation with "4 lines" here
Another answer in case all of the above solutions are not working for you.
My original error was similar to OP: ValueError: invalid literal for int() with base 10: '52,002'
I then tried the accepted answer and got this error: ValueError: could not convert string to float: '52,002' --this was when I tried the int(float(variable_name))
My solution is to convert the string to a float and leave it there. I just needed to check to see if the string was a numeric value so I can handle it correctly.
try:
float(variable_name)
except ValueError:
print("The value you entered was not a number, please enter a different number")
나는 장고에서 이 에러를 직면했다 - 내 모델에서 한번은 내가 가지고 있었다.DateTimeField()
저장된 오브젝트가 있습니다.그 후 필드를 로 변경했을 때DateField()
.
이 문제를 해결하기 위해 단순히 데이터베이스를 편집했습니다.db.sqlite3
이 형식에서 날짜 값을 변경했으므로2021-08-09 13:05:45
여기에2021-08-09
그게 다예요.
This seems like readings is sometimes an empty string and obviously an error crops up. You can add an extra check to your while loop before the int(readings) command like:
while readings != 0 or readings != '':
readings = int(readings)
I got into the same issue when trying to use readlines() inside for loop for same file object... My suspicion is firing readling() inside readline() for same file object caused this error.
Best solution can be use seek(0) to reset file pointer or Handle condition with setting some flag then create new object for same file by checking set condition....
I had hard time figuring out the actual reason, it happens when we dont read properly from file. you need to open file and read with readlines() method as below:
with open('/content/drive/pre-processed-users1.1.tsv') as f:
file=f.readlines()
It corrects the formatted output
I was getting similar errors, turns out that the dataset had blank values which python could not convert to integer.
ReferenceURL : https://stackoverflow.com/questions/1841565/valueerror-invalid-literal-for-int-with-base-10
'source' 카테고리의 다른 글
const-correct는 컴파일러에 최적화를 위한 더 많은 공간을 제공합니까? (0) | 2022.10.27 |
---|---|
테이블에서 모두 삭제 (0) | 2022.10.27 |
pdf 파일 다운로드를 위한 PHP 헤더 수정 (0) | 2022.10.27 |
사전에서 임의의 값을 얻는 방법 (0) | 2022.10.26 |
열에 있는 각 개별 값의 카운트를 가져오려면 어떻게 해야 합니까? (0) | 2022.10.26 |