Kezdőoldal » Számítástechnika » Programozás » Hogyan tudom megoldani ezt...

Hogyan tudom megoldani ezt pythonban?

Figyelt kérdés

hogyan tudom megoldani , hogy 2 fajlban szereplő számokat összeadjak,illetve kivonjam egymasbol?


pl:data.txt: kiss pista 40

update.txt: kiss pista +16

és a kimeneti fájlban az szerepeljen , hogy pl newdata: kiss pista 56.


A fájlokban mindig csak 1 név szerepel, szokozzel elválasztva egymastol.


válaszotokat előre is köszönöm.



a kódom:

#beolvasás

data=list()

with open("data.txt.txt") as f:

for line in f:

data.append(line.rstrip().split(" "))

data.sort(key=lambda x:(x[0]))



update=list()

with open("update.txt") as z:

z.readline()

for line in z:

update.append(line.rstrip().split(" "))


#kiírás

with open("newdata.txt") as k:



2017. márc. 28. 11:26
 1/5 anonim ***** válasza:

A nevet egyben meghagyod stringként, a szám részét pedig árkonvertálod intté. Az egészet pedig beteszed egy szótárba, aminek a kulcsa a név, az értéke pedig a szám. A szótárral az a jó, hogy akkor is működik, ha több név van a fájlban és mondjuk egy név többször is szerepelne.


pl. beolvasásnál


from collections import defaultdict

data = defaultdict(int)

...

# mindkét fájlra

for line in f:

x = line.split()

nev, szam = ' '.join(x[:-1]), int(x[-1])

data[nev] += szam


# kiírás

with open('newdata.txt', 'w') as outfile:

for nev, szam in data.items():

outfile.write('{0} {1}\n'.format(nev, szam))

2017. márc. 28. 12:23
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

és hogyha nekem egy osrban ilyen formatumu adatok vannak:

pl. 10210-41011 Nagy Árpád 2016.02.03. 323532


és nekem továbbra is csak a "32352" re van szuksegem , akkor hogyan csinalom meg?

2017. márc. 28. 12:57
 3/5 anonim ***** válasza:

Akkor a szám részét továbbra is ki tudod szedni a fenti módszerrel, a névhez viszont trükközni kell. Ha mondjuk feltételezzük, hogy a sorban a néven kívül csak számokat tartalmazó részek vannak, akkor végigmegyünk a sorban szereplő szavakon és leellenőrizzük az isalpha() függvénnyel, hogy tényleg csak betűk vannak-e benne. Például:


sor = '10210-41011 Nagy Árpád 2016.02.03. 323532'

nev = ' '.join([x for x in sor.split() if x.isalpha()])

szam = int(x[-1])

2017. márc. 28. 14:02
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

#3-ban:

szam = int(x[-1]) helyett

szam = int(sor.split()[-1])

2017. márc. 28. 14:03
Hasznos számodra ez a válasz?
 5/5 sharkxxx ***** válasza:
2017. márc. 28. 16:23
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!