Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: PyData Warsaw 2017, 19-20 października - konferencja Data Science
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: Konwersja tekstu na liczby  (Przeczytany 1230 razy)
« : 23:18 19/11/14 »
filon92 Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 1


Witam,

Jestem kompletnie początkujący jeśli chodzi o pythona.
Mam pytanie, otóż wczytując dajmy na to linie tekstu z jakiegoś pliku (plik zawiera wartości oddzielone od siebie przecinkami) czy mogę prze konwertować wczytaną linie na np tablice zawierającą te wartości z pliku ale już jako np int-y?
Z góry dziękuję za pomoc i pozdrawiam.
Zapisane
« Odpowiedz #1 : 23:33 19/11/14 »
sig Offline
Professional Python User

Zobacz profil
***

Reputacja: 74
Wiadomości: 327


Możesz, np tak
Kod
linia = "3,4,5,6,7"
tab = linia.split(",")
tab = [int(x) for x in tab]
 

Zamiast "na sztywno" ustawiasz zmienną linia, wczytujesz z pliku.
Zapisane
« Odpowiedz #2 : 20:08 21/11/14 »
b__ Offline
Advanced Python User

Zobacz profil
**

Reputacja: 9
Wiadomości: 116


Tak samo tylko zamiast int() dajesz float()

Kod
linia = "0.3215,1.54366,2.54363"
tab = linia.split(",")
tab = [float(x) for x in tab]

Jeśli chcesz pogodzić int i float w jednej linii to możesz zrobić tak:
Próbujesz konwertować string na liczbę, jeśli jest błąd ``ValueError: invalid literal for int() with base 10``ponawiasz konwersję ale już na float.

Kod
linia = "2,0.3215,3,1.54366,4,5,2.54363,6,7"
tab = []
for i in linia.split(","):
   try:
       tab.append(int(i))
   except ValueError:
       tab.append(float(i))
 
print tab
[2, 0.3215, 3, 1.54366, 4, 5, 2.54363, 6, 7]
 
Zapisane
« Odpowiedz #3 : 19:29 23/11/14 »
bartekch Offline
Hello World!

Zobacz profil WWW
*

Reputacja: 5
Wiadomości: 93


Można też tak:

Kod
def convert(tab):
   return [int(x) for x in tab.split(',')]
 
#--
 
my_string = '1,2,3,4'
 
print (convert(my_string))
 
#-- wynik:
 
[1,2,3,4]
 
Zapisane
« Odpowiedz #4 : 20:00 23/11/14 »
szok Offline
Hello World!

Zobacz profil
*

Reputacja: 6
Wiadomości: 81


Lub Uśmiech

Jak plik jest mały:
Kod
with open('txt.csv', 'r') as f:                                                                                         
    for line in f.readlines(): # Dla malych plikow                                                                      
        print map(int, line.split(','))
 
Zapisane
« Odpowiedz #5 : 14:19 25/11/14 »
jackdi
Gość
bardzo pomocne rady!
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2017 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot