Kezdőoldal » Számítástechnika » Programozás » Pythonban tudna segíteni valaki?

Pythonban tudna segíteni valaki?

Figyelt kérdés

2.7-es verzió.


Be szeretnék olvasni egy fájlból adatokat, üres sorig szeretnék először olvasni, a sorokban több adat van és ezeket egy bizonyos elválasztó jel tagolja, azok mentén szeretném tuple-be rakni ezeket az adatokat.


Pl.:

sor1 , adat1 , ....

sor2 , adat2 , ....


2016. márc. 15. 10:53
 1/8 anonim ***** válasza:

Meddig jutottál?

G.

2016. márc. 15. 10:54
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
Jó, és mi a kérdés? Netán írjuk meg helyetted a programot?
2016. márc. 15. 11:02
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:
#2-es, ennyire csak nem fogalmazhattam szarul... Nem, nem akarom, hogy bárki is megírja helyettem. Azt akarom, hogy a pl-ban felsoroltaknak megfelelően a sor1,sor2,....,sorn adatok és az adat1,adat2,...,adatn adatok külön tuple-be kerüljenek.
2016. márc. 15. 11:05
 4/8 anonim ***** válasza:
100%

0. Létrehozol egy üres listát


1. Megnyitod a fájlt olvasásra (open()).


2. A kapott fájlobjektumot felhasználva soronként végigmész az állományon (for ciklus)


3. A kapott sort szétbontod a kívánt karakterek mentén (split()) és belerakod a listába (append()). Esetleg ügyelj a sorvége jelekre (replace()).

Így kapsz egy kért dimenziós listát, az egyik dimenzió a sorok, a másik az oszlopok.


4. Ha oszloponként szeretnéd az adatokat egy-egy sorba rakni, arra szolgál a zip():

oszlopok = zip(*sorok)


5. Ezt utána akár át is alakíthatod tuple-ba (tuple()).

2016. márc. 15. 11:33
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:
Köszönöm :)
2016. márc. 15. 11:34
 6/8 anonim ***** válasza:

Tehát az oszlopok kerüljenek tuple-be?

Pl.:

sorok = (sor1, sor2, sorn)

adatok = (adat1, adat2, adatn)


A split() függvény feldarabolja a beolvasott sort az elválasztójel mentén és egy listába rakja:


>>> 'alma,korte,banan'.split(',')

['alma', 'korte', 'banan']


A zip() pedig tuple-ba rendezi a listák oszlopait:


>>> a = [1, 2, 3]

>>> b = [4, 5, 6]

>>> zip(a, b)

[(1, 4), (2, 5), (3, 6)]


Ezt összerakva beolvasod és darabolod a sorokat amit egy listában tárolsz, majd meghívod rajta a zip() függvényt:


>>> sorok = [['alma', '5', 'erett'], ['korte', '2', 'romlott'], ['banan', '4', 'eladva']]

>>> zip(*sorok)

[('alma', 'korte', 'banan'), ('5', '2', '4'), ('erett', 'romlott', 'eladva')]


Ha rosszul értettem és csak a sorok kellenek tuple-ban akkor tuple(beolvasott.split(','))

2016. márc. 15. 11:38
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:
Úgy látom elkéstem pár perccel :)
2016. márc. 15. 11:40
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
100%

Jó, tudom, kicsit túlmutat a kérdésen a javaslatom, de python alatt táblázatszerű adatstruktúrák kezelésére van egy nagyon népszerű és hatékony könyvtár: pandas (python for data anaysis). Egy vesszővel elválasztott adatfile (csv) beolvasása a következő képpen történik:


Mondjuk igy nez ki a file:

gyumolcs,darab,forint

alma,15,2

korte,45,3

szilva,21,2


import pandas as pd

file = "test.csv"

df = pd.read_csv(file, delimiter=",")


Mennyibe kerul az osszes alma:

df[df.gyumolcs == "alma"].darab * df[df.gyumolcs == "alma"].forint


Mennyibe kerul az osszes gyumolcs:

sum(df.darab * df.forint)


Lehet, hogy erre a tulegyszerusitett peldara egy kicsit eroltetett a pandas hasznalata, de egy kicsit is komplikaltabb esetben rettenetesen leegyszerusiti a kodolast. (Mar ehhez is loopokat kellett volna irni.)

2016. márc. 17. 12:32
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!