Hogyan tudok duplikátumot eltávolítani Python-al?
egy txt fileban lenne ez a tartalom:
123|alma
123|narancs
234|narancs
234|narancs
123|alma
345|citrom
el kellene távolítani azokat a sorokat amikben a sorszám duplikátum
ez lenne az eredmény:
345|citrom
ezt kellene kiírnia txt-be
import pandas as pd
df = pd.read_csv('alma.txt', sep='|', header=None)
df.drop_duplicates(subset=0, keep = False, inplace = True)
df.to_csv(r'alma2.txt', header=None, index=None, sep='|', mode='a')
unique = {}
with open('c:\Temp\fruits.txt', 'rt') as file:
for line in file.readlines():
unique[id_] = (id_ := line.split('|')[0]) in unique or line
with open('c:\Temp\fruits2.txt', 'wt') as new_file:
new_file.writelines(filter(True.__ne__, unique.values()))
---------------------------------------------------------------------------
a kettőspont-al problémája van itt:
unique[id_] = (id_ := line.split('|')[0]) in unique or line
azt írja there's an error in your program: invalid syntax
a 2.es válaszoló kódjára meg ezt írja ki
Traceback (most recent call last):
File "C:/Python27/fruit", line 1, in <module>
import pandas as pd
ImportError: No module named pandas
-----------------------------------------------------------------------
így használtam a kódot:
import pandas as pd
df = pd.read_csv('c:\Temp\fruits.txt', sep='|', header=None)
df.drop_duplicates(subset=0, keep = False, inplace = True)
df.to_csv(r'c:\Temp\fruits2.txt', header=None, index=None, sep='|', mode='a')
Winautomation-ban szeretném használni a kódot. Azt írja a winautomation hogy: Executes Python2 script code and retrieves its output into a variable.
Lehet akkor a txt-be kiírás nem is jó, hanem csak valahogy ki kellene köpnie ezt az eredményt a kódnak amit a winautomation tud használni.
Én nem ismerem a Winautomation-t, meg nem tudom hogy hogy van python kernel beleépítve, ami futtatja a kódot, meg hogy lehet package-ket hozzáadni. De az a sejtésem, hogy ezt a script opciót, azért rakták inkább bele, hogy egyszerű logikai elágazásokat csináljon, hogy pl. ha valami így meg úgy lefutott, akkor ezt meg azt csinálja. Az az output opció is arra van, hogy a kimenetet maga a winautomation használja fel, hogy valahol máshol csináljon vele valamit. (pl. file neveket dob ki a script, és később azokat automatizálva másolgatja)
Ha valami ilyen különálló feladatot akarsz futtatni, arra lehet célszerűbb lenne egy külön script, amit egyszerűen csak lefuttat (mintha parancssorból indítanád). Erre a legegyszerűbb megoldás pl. powershell script, ami windowsban alapból benne van. (de én nem értek hozzá). De pythonnal is megcsinálhatod, csak telepítsd fel, pip el rakd fel a pandast, és a kódot rakd egy .py kiterjesztésű fileba. És akkor "python scriptnév.py" vel futtasd/automatizáld. (egyébként ilyen egyszerű futtatható dolog automatizálásához nem is biztos hogy kell Winautomation, mert windowsba alapból bele van építve a feladatütemező)
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!