2016-04-02 17 views
1

Başlıktan görebileceğiniz gibi, python programımda bu hatayla ilgili sorun yaşıyorum.(Python) ValueError: base 10 ile int() için geçersiz literal: ''

0,2 3,0 4,5 7,8 9,6 10,5 12,8 15,20 17,21 21,10 
1,3 3,4 5,9 6,8 11,3 12,4 20,20 
0,0 6,6 12,5 19,6 

ve dönüşen her sayı ile diziler dizisi dönüştürmek:

Temelde, ne, bu bölümünde yapmak Böyle bir txt dosyası içeren bir şey olabilir girdi dosyası almasıdır int olarak

Bu

fonksiyonudur: olmalıdır elde edilen A, yukarıda verilen giriş ile

A = [] 


# l = line 
# e = element 
# with the functions under here we take the input and store it as an array of arrays. 


def e_split(e): 
    temp = [] 
    for tv in e.split(","): 
     temp.append(int(tv)) 
    return temp 


def l_split(l): 
    temp = [] 
    for e in l.split(" "): 
     temp.append(e_split(e)) 
    return temp 


for l in fileinput.input(): 
    A.append(l_split(l)) 

(ve çalışır çünkü olduğu)

A = [[[0, 2], [3, 0], [4, 5], [7, 8], [9, 6], [10, 5], [12, 8], [15, 20], [17, 21], [21, 10]], [[1, 3], [3, 4], [5, 9], [6, 8], [11, 3], [12, 4], [20, 20]], [[0, 0], [6, 6], [12, 5], [19, 6]]] 

başlıkta verilen hata oluşur İşte

2,1 3,6 6,4 8,2 10,4 12,6 14,1 17,-2 18,1 21,1 23,3 24,-2 26,-2 27,1 
3,2 5,0 7,-3 10,-1 11,0 14,-1 15,-4 18,-4 21,-8 22,-12 24,-16 25,-18 27,-16 
2,3 5,4 7,-1 8,4 11,7 12,5 13,3 14,6 16,9 18,13 19,18 21,15 22,14 24,12 26,17 
3,10 4,14 7,11 8,10 9,7 12,6 13,2 16,6 19,3 20,7 23,2 26,1 27,0 29,2 
2,10 5,14 8,18 9,20 12,22 13,27 14,26 16,27 18,24 20,22 21,17 23,14 26,10 
2,3 5,2 8,3 9,3 11,-2 13,0 14,-5 15,-1 17,-1 20,3 21,8 23,3 25,5 
3,1 5,2 8,6 11,11 13,13 14,14 17,19 18,15 19,17 21,16 22,11 23,15 26,19 29,24 

tracerback var: böyle bir başkasıyla benim giriş dosyası değiştirmek

Traceback (most recent call last): 
    File "max_growth_period.py", line 29, in <module> 
    A.append(l_split(l)) 
    File "max_growth_period.py", line 24, in l_split 
    temp.append(e_split(e)) 
    File "max_growth_period.py", line 17, in e_split 
    temp.append(int(tv.replace("\n", ""))) 
ValueError: invalid literal for int() with base 10: '' 

Bu sorunu bulmaya çalıştığım 2 gün var ama hala başaramadım. Sadece bu sorunu çözmek için yönetilen @zondo için

Teşekkür:


ÇÖZÜLDÜ. Temel olarak, ikinci giriş dosyasında, her satırın sonunda fark etmediğim bazı boşluklar olduğu için, 'u l.split() olarak yeniden yazmak zorunda kaldım.

Yardım için herkese teşekkürler btw!

+0

'int (" 4 \ n ")' gayet iyi. '\ N' yerine' '' 'ile değiştirmeniz gerekmez. – zondo

+0

Teşekkürler @zondo, Bunu bilmiyordum ... Oldukça iyi çalışıyor. Ayrıca buradaki kodu da burada düzelteceğim. Fakat maalesef aynı hatayı almaya devam ediyorum. – Thomas

+0

Dosyadaki her satırın sonunda boşluk var mı? Eğer yaparsanız, onları kaldırın. BTW, '.split (" ")' yerine '.split()' yi kullanabilirsiniz. Sorun, her satırın sonunda boşluksa, bu da düzeltecektir. – zondo

cevap

1

Senin sorunun da çizgiler sonunda boşluklar olan beri .split(" ")

>>> "this ".split(" ") 
['this', ''] 

kullanmasıdır, boş bir dize içeren bir liste yaratıyor. senin sorunu çözmek gerekir

>>> "this ".split() 
['this'] 

Eğer .split() için argüman kaldırırsanız

.

İlgili konular