28. 10. 2011. | #1 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
Python string replace
Pitanje za one-liner pythonovce
Imam kod koji izgleda otprilike ovako: Kôd:
#paths je tuple fixed_paths = [] for path in paths: if path[:1] == '\\': path = path.replace("\\", "", 1) fixed_paths.append(path) paths = tuple(fixed_paths) Verujem da ovo moze da se izvede znatno elegantnije, neke ideje isl ? Cela ideja ovoga se vrti oko problema koji imam sa os.path.join. Nemam potpunu kontrolu nad njegovim inputom dako da recimo mogu da dobijem os.path.join("c:\download", "c:\download\movies\", "\fantasy\") sto ce da mi vrati samo \fantasy\, dok bi ocekivao c:\download\movies\fantasy\ Da li postoji neko elegantno resenje za ovaj problem? Mislio sam da od svakog sledeceg argumenta oduzmem sve predhodne ukoliko on pocinje sa njima. To bi me pokrpilo ali mi se idalje cini kao budz. |
28. 10. 2011. | #2 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Možda
Kôd:
paths = tuple([re.sub(r'^\\', '', x) for x in paths])
__________________
blog Poslednja izmena od jablan : 28. 10. 2011. u 13:25. |
"Hvala" jablan za poruku: |
28. 10. 2011. | #3 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
Da to bi resilo ovaj prvi deo, imas li neku ideju za deo vezan za apsolutne putanje ?
Recimo vako, nisam testirao: Kôd:
replacements = [] fpaths = [] for path in paths: if len(replacements)>0: for replacement in replacements: path = re.sub(r'^{}'.format(replacement), '', path) fpaths.append(path) replacements.append(path) Poslednja izmena od cvele : 28. 10. 2011. u 13:54. |
28. 10. 2011. | #4 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Koliko ja kontam http://docs.python.org/library/os.pa...l#os.path.join on bi trebalo da radi ok za tvoj primer (možda nakon što ubiješ beksleš pre "fantasy"). Pomoglo bi kad bi tačno naveo šta dobijaš kao input i šta očekuješ kao output.
__________________
blog |
28. 10. 2011. | #5 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
npr imam input
('C:\\Users\\Vladimir Cvetic\\Downloads', 'C:\\Users\\Vladimir Cvetic\\Downloads\\text.txt') ocekivao bi C:\\Users\\Vladimir Cvetic\\Downloads\\text.txt ili ('C:\\Users\\Vladimir Cvetic\\Downloads', 'C:\\Users\\Vladimir Cvetic\\Downloads\\text', 'text.txt') ocekivao bi C:\\Users\\Vladimir Cvetic\\Downloads\\text\\text.txt |
28. 10. 2011. | #7 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
Hmm cudno, pogledacu fala na cimanju
|
|
|