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: PyStok #32 - 20 czerwiec 2018, 18:00, Białystok
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: Wczytanie danych z pliku i ich obróbka  (Przeczytany 502 razy)
« : 00:15 13/01/18 »
Xardax Offline
Hello World!

Zobacz profil
*

Reputacja: -1
Wiadomości: 2


Hej

Próbuję stworzyć program wczytujący dane z pliku, a następnie wyszukujący konkretne informacje. Dane są w kolumnach oddzielonych spacją.
Stworzyłem coś takiego:
Kod
zamowienia = []
orders = open("orders.txt", "r")
zmienna = orders.readlines()
 
for i in range(len(zmienna)):
   wiersz = orders.readline()
   zamowienia.append(wiersz.split(' ')

Kod nie wczytuje poprawnie pliku. Jestem dość początkującym programistą i nie za bardzo wiem jak się zabrać za takie wczytywanie w pythonie.
Zapisane
« Odpowiedz #1 : 02:52 13/01/18 »
Guaz Offline
Advanced Python User

Zobacz profil
**

Reputacja: 38
Płeć: Mężczyzna
Wiadomości: 245


Kod jest poprawny Uśmiech. Tyle że do pewnego momentu.
Przed przeczytaniem poniższego rozwiązania polecam się zapoznać z linkiem:
https://www.tutorialspoint.com/python/python_for_loop.htm

Oraz, tutorialem .readlines() oraz .readline() dla obsługi pliku:
https://docs.python.org/3/tutorial/inputoutput.htmldokumentacją

Po tym powinieneś wiedzieć czym jest (seek) który oznacza pozycję w pliku którą będzie odczytywał python. Domyślnie przy wczytaniu pliku z argumentem "r", kursor w pliku jest ustwaiony przed pierwszym znakiem (w pozycji 0). Po wykonaniu readlines(), przechodzi do samego końca, przez co nie jesteśmy w stanie go przesunąć, ale całą treść pliku już mamy zapisaną jako elementy w liście. np. dla pliku:
Kod:
To jest jakiś plik testowy
i zawiera on kilka linii
tekstu który jest przykładowy
po wykonaniu instrukcji zmienna = orders.readlines()
będzie ona przechowywać dane w takiej formie:
Kod
["To jest jakiś plik testowy\n", "i zawiera on kilka linii\n", "tekstu który jest przykładowy\n"]
 
Więc aby wybierać kolejne linie z tekstu, musimy wykorzystać zmienną w której je przechowujemy za pomocą pętli for tak jak w pierwszym linku:
Kod
 for line in variable:
    print(line)
#>> To jest jakiś plik testowy\n
#>> i zawiera on kilka linii\n
#>> tekstu który jest przykładowy\n
 
To powinno rozwiązać twój problem Uśmiech. W razie czego pisz z kolejnymi Uśmiech
Zapisane

Python 3.5.2 / Mint
« Odpowiedz #2 : 20:04 13/01/18 »
Xardax Offline
Hello World!

Zobacz profil
*

Reputacja: -1
Wiadomości: 2


Dzięki za pomoc  Uśmiech

Aktualnie mam taki kod
Kod
zamowienia = []
orders = open("orders.txt", "r")
 
zmienna = orders.readlines()
for line in zmienna:
   zamowienia.append(line.split('\t'))
 
max=0.0
indexmax=0
for i in range(0,len(zmienna),1):
 if float(zamowienia[i][9]) > max:
     max=int(zamowienia[i][9])
     indexmax=i
print (max)
print (indexmax)

Próbuję odnaleźć największą wartość w danej kolumnie. Jednak za każdym razem pokazuje 150 mimo, że są tam większe wartości. Podejrzewam, że błędnie konwertuje wartość z str do float.

@edit znalazłem już błąd, zmieniłem plik jednak nie index
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

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