Kezdőoldal » Számítástechnika » Programozás » Hogyan tudok duplikátumot...

Hogyan tudok duplikátumot eltávolítani Python-al?

Figyelt kérdés

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


2021. jún. 3. 17:07
1 2 3
 11/21 anonim ***** válasza:

Ez a pandas-os megoldás nem jó, pont véletlen jó megoldást ad erre az inputra, de különben nem jó.

Pl ha ez lenne az input:

123|alma

123|narancs

234|narancs

341|citrom2

234|narancs

123|alma

345|citrom


Már nem jó a kimenet.


@10:35

"powershell script, ami windowsban alapból benne van." Ez nem igaz, nincs benne alapból.


Ha már a kérdező ilyen (régebbi) 2-es python-t használ akkor így:

[link]

Bár annyira amúgy se muszáj spórolni a sorokkal.



[link]

2021. jún. 4. 22:58
Hasznos számodra ez a válasz?
 12/21 anonim ***** válasza:
Bocsi 2x benne maradt a link, utólag nem lehet javítani.
2021. jún. 4. 22:59
Hasznos számodra ez a válasz?
 13/21 anonim ***** válasza:

Még se jó ez régebbire (de rég volt már, évekkel ezelőtt), ennyire "esetlen" ez a régi python:

Kipróbáltam 2.7-essel, így lefut:

[link]

2021. jún. 4. 23:16
Hasznos számodra ez a válasz?
 14/21 anonim ***** válasza:

#11

Mi lenne a helyes output? Jelenleg a citrom2 és a citrom sorok maradnak meg a pandas-os megoldásban, kipróbáltam. A többi sor SORSZÁMA többször is szerepel (123,234), a két citromé egyedi. #13-as kódot is kipróbáltam a különbség annyi hogy a #13 megoldása végén nincs üres sor a kimenetben, szokás üres sorral zárni egy filet, de ez nem ‘hiba’.

2021. jún. 5. 10:55
Hasznos számodra ez a válasz?
 15/21 zozo256 ***** válasza:
13# köszi az átírást, én már lusta voltam hozzá :D
2021. jún. 5. 12:11
Hasznos számodra ez a válasz?
 16/21 anonim ***** válasza:

"Mi lenne a helyes output?"


Nem akarom túlmagyarázni, a képen látszik, egy képernyőre ráfért az egész. Amit módosítottam egyik hozzászóló kódját amit az visszaadott az a jó, természetesen amit az hozzászóló írt is ugyanúgy helyes megoldást adott, csak kompatibilitás miatt átírtam hogy 2-es python-ba is működjön.

[link]



"13# köszi az átírást, én már lusta voltam hozzá :D"


Szívesen.

2021. jún. 5. 23:09
Hasznos számodra ez a válasz?
 17/21 anonim ***** válasza:

@23:09

Bocsi, most nézem hogy mellékhatása van a te pandas-os megoldásodnak, append-et csinál, jó eredményt ad ha minden futtatás előtt törlöm az alma2.txt fájlt ha létezik. Azt hittem már tegnapról én emlékeztem rosszul hogy kevesebb sorból állt az alma2.txt.

2021. jún. 5. 23:23
Hasznos számodra ez a válasz?
 18/21 A kérdező kommentje:

Ezzel jól lefuttatta a winautomation is a parancsot és szépen kiírta az eredményt temp2.txt-be


-------------------------------------------------------------------------------


unique = {}


with open('c:/Temp/temp.txt', 'rt') as file:

for line in file.readlines():

id_ = line.split('|')[0]

unique[id_] = id_ in unique or line


with open('c:/Temp/temp2.txt', 'wt') as new_file:

new_file.writelines(filter(lambda x : not x is True, unique.values()))


-------------------------------------------------------------------------------


Köszönöm a segítséget!

2021. jún. 7. 09:16
 19/21 A kérdező kommentje:

most lefuttattam úgy, hogy ez van a txt-ben


123|alma

123|narancs

234|narancs

341|citrom2

234|narancs

123|alma

345|citrom


és ezzel ezt az outputot adja


345|citrom341|citrom2

2021. jún. 7. 09:25
 20/21 anonim ***** válasza:

A sortörésekkel lesz szerintem a gond.

A "for line in file.readlines()" ciklusba a line-be benne kell lennie a sortörésnek is. Ez windows-ban carriage return, line feed azaz kocsi vissza, soremelés. A régi mechanikus írógépek mintájára. A hexa kódja 0d és 0a. Linuxos rendszereken a 0a szokott lenni. Nem tudom a mostani windows-okba a notepad az tudja e kezelni a különböző fajta sorvégjeleket, évtizedekig nem oldották meg. Nem használok windows-t. A fejlesztők kis százaléka használ windows-t. A notepad++ -ot használtam notepad helyett még amikor használtam win-t.

Ezt kéne megnézni hogy milyen kimenetet ad, ha hexa string-be konvertáljuk:

Nálam az alma txt első sorát beolvasva és konvertálva : 31:32:33:7c:61:6c:6d:61:0a .


Az unique_fruits.txt fájlt egészében olvastam be text módba, nem soronként, ekkor meg : 33:34:31:7c:63:69:74:72:6f:6d:32:0a:33:34:35:7c:63:69:74:72:6f:6d:0a

ott van közte a 0a az a sorvégjelet jelenti a text fájlba.


A kód : [link]

A kép : [link]

2021. jún. 7. 16:05
Hasznos számodra ez a válasz?
1 2 3

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!