Hogyan tudom megoldani ezt pythonban?
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:
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))
é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?
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])
#3-ban:
szam = int(x[-1]) helyett
szam = int(sor.split()[-1])
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!