kzen.dev
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
Sarah Cox
Sarah Cox
Question

ValueError: neplatný literál pre int() so základom 10: ''

Vytváram program, ktorý načíta súbor a ak prvý riadok súboru nie je prázdny, načíta ďalšie štyri riadky. Na týchto riadkoch sa vykonajú výpočty a potom sa načíta ďalší riadok. Ak tento riadok nie je prázdny, pokračuje sa ďalej. Dostávam však túto chybu:

ValueError: invalid literal for int() with base 10: ''.

Prvý riadok prečíta, ale nedokáže ho previesť na celé číslo.

Čo môžem urobiť, aby som tento problém vyriešil?

Kód:

file_to_read = raw_input("Enter file name of tests (empty string to end program):")
try:
    infile = open(file_to_read, 'r')
    while file_to_read != " ":
        file_to_write = raw_input("Enter output file name (.csv will be appended to it):")
        file_to_write = file_to_write + ".csv"
        outfile = open(file_to_write, "w")
        readings = (infile.readline())
        print readings
        while readings != 0:
            global count
            readings = int(readings)
            minimum = (infile.readline())
            maximum = (infile.readline())
247 2009-12-03T17:34:19+00:00 3
fifi finance
fifi finance
Edited question 10 február 2019 в 10:55
Programovanie
python
Popular videos
how to fix Value Error: invalid literal for int() with base 10
how to fix Value Error: invalid literal for int() with base 10
pred 2 rokmi
ValueError Invalid Literal For Int With Base 10  | python | Neeraj Sharma
ValueError Invalid Literal For Int With Base 10 | python | Neeraj Sharma
pred 2 rokmi
ValueError: invalid literal for int() with base 10: 'arya' | Python Tutorial | Inventivearya |
ValueError: invalid literal for int() with base 10: 'arya' | Python Tutorial | Inventivearya |
pred 2 rokmi
Олимпиадный C++. Занятие 4: константы, литералы, преобразования типов, структуры, методы, операторы
Олимпиадный C++. Занятие 4: константы, литералы, преобразования типов, структуры, методы, операторы
pred 2 rokmi
AtCoder Easy | Algo & Coding Stream #1
AtCoder Easy | Algo & Coding Stream #1
pred 3 rokmi
LeetCode Dynamic Programming Problems | Stream Highlights
LeetCode Dynamic Programming Problems | Stream Highlights
pred 4 rokmi
C - Secret Number | AtCoder Beginner Contest 201 | BRUTE FORCES
C - Secret Number | AtCoder Beginner Contest 201 | BRUTE FORCES
pred 2 rokmi
Gennady Korotkevich - TOURIST || Codejam 2020 winner || Best Competitive Programmer
Gennady Korotkevich - TOURIST || Codejam 2020 winner || Best Competitive Programmer
pred 3 rokmi
« Predchádzajúci
Ďalšie »
This question has 1 odpoveď in English, to read them log in to your account.
 SilentGhost
SilentGhost
3 december 2009 в 5:40
2009-12-03T17:40:45+00:00
Viac na
Zdroj
Upraviť
#9769672

Pytonický spôsob iterácie nad súborom a konverzie na int:

for line in open(fname):
   if line.strip():           # line contains eol character(s)
       n = int(line)          # assuming single integer on each line

To, čo sa snažíte urobiť, je o niečo zložitejšie, ale stále nie je jednoduché:

h = open(fname)
for line in h:
    if line.strip():
        [int(next(h).strip()) for _ in range(4)]     # list of integers

Takto sa spracuje 5 riadkov naraz. Pred verziou Python 2.6 používajte h.next() namiesto next(h).

Dôvod, prečo ste mali ValueError, je ten, že int nedokáže previesť prázdny reťazec na celé číslo. V tomto prípade by ste'museli buď skontrolovať obsah reťazca pred konverziou, alebo okrem chyby:

try:
   int('')
except ValueError:
   pass      # or whatever
Peter Mortensen
Peter Mortensen
Edited answer 9 december 2009 в 10:21
53
0
Artificial intelligence to parse product page
productapi.dev
Eli Bendersky
Eli Bendersky
3 december 2009 в 5:43
2009-12-03T17:43:40+00:00
Viac na
Zdroj
Upraviť
#9769673
    readings = (infile.readline())
    print readings
    while readings != 0:
        global count
        readings = int(readings)

V tomto kóde je problém. readings je nový riadok načítaný zo súboru - je to reťazec. Preto by ste ho nemali porovnávať s 0. Ďalej ho nemôžete jednoducho previesť na celé číslo, pokiaľ si nie ste istí, že je to naozaj celé číslo. Napríklad prázdne riadky tu spôsobia chyby (ako ste už určite zistili).

A prečo potrebujete globálny počet? To'je určite zlý návrh v Pythone.

1
0
Artificial intelligence to parse product page
productapi.dev
 Imran
Imran
3 december 2009 в 5:49
2009-12-03T17:49:47+00:00
Viac na
Zdroj
Upraviť
#9769674

Vytváram program, ktorý číta súbor a ak je prvý riadok súboru nie je prázdny, prečíta ďalšie štyri riadky. Výpočty sa vykonávajú na týchto riadkoch a potom sa načíta ďalší riadok prečíta.

Niečo také by malo fungovať:

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
0
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
Анна Литвиненко
Registered pred dňom
2
Inessa bu
Registered pred mesiacom
3
Denis Babushkin
Registered pred mesiacom
4
asakuno asakuno
Registered pred mesiacom
5
aldo salerno
Registered pred mesiacom
Artificial intelligence to parse product page
productapi.dev
DE
EL
ES
FI
FR
ID
IT
JA
KO
LT
LV
NL
NO
PT
RO
RU
SK
SL
TR
ZH
© kzen.dev 2023
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora