Hi!
Pythonban nagyon kezdo vagyok, de nem is megoldast varok, hanem otleteket. awk- val ez eleg egyszeru lenne, de python- nal kellene megoldanom a dolgot.
Van egy file, es (A) stringet szeretnem kicserelni (B)- re, de csak azokban a sorokban, amik (C)- vel kezdodnek. Elofordulhat, hogy (C) tartalmazza (A)- t, de (C)- ben nem szeretnem kicserelni, csak az adott sorban (C) string utan.
Igazabol inkabb otleteket varok, hogy ezt hogyan lehetne megoldani, bar... .
Koszi.
- 1186 megtekintés
Hozzászólások
ha tudsz ra regex pattern-t irni az mukodni fog a legtobb nyelven (azaz mind1 hogy most pythonrol van szo), amugy nem teljesen vilagos szamomra a feladatleirasod, valami peldat tudnal irni?
------------------
http://www.youtube.com/watch?v=Sf8cM7f6P2I
- A hozzászóláshoz be kell jelentkezni
Hi!
Nos, egy apache config filerol van szo, kb. igy nez ki:
# admin=tst
Order Allow,Deny
Allow from All
AuthType basic
AuthName "O E R T P"
Require ldap-user tst dap ser user1 nuser quir
<Limit MKCOL>
Deny from all
</Limit>
No es itt kellene mondjuk a
ser
stringet lecserelni
s3r
- re a Require ldap-user- rel kezdodo sorban, de csak ezen string utan.
Hm, ha az egesz megoldhato regexppel, akkor viszont orulnek ha valaki tudna benne segiteni, mert ebben nem nagyon vagyok otthon.
Koszi.
- A hozzászóláshoz be kell jelentkezni
import re, sys
line = sys.stdin.readline()
while len(line) <> 0:
line = re.sub("(\s)ser(\s)", "\g<1>s3e\g<2>", line)
sys.stdout.write(line)
line = sys.stdin.readline()
- A hozzászóláshoz be kell jelentkezni
Ez elvileg azt csinálja amit szeretnél csak szétcseszi a sorokat ha több ilyen van:
import re
def cserebere(line):
if re.match(mimenten, line):
return re.sub(mit, mire, line)
else:
return line
filename = ".htaccess"
mimenten = "^[\s]*Require ldap-user"
mit = "(\s)ser(\s)"
mire = " s3r "
lines = [cserebere(line) for line in open(filename, "r")]
open(filename, "w").writelines(lines)
<
gonosz>
A javítását már rád bízom hogy Te is dolgozz egy kicsit. :)
<
/gonosz>
- A hozzászóláshoz be kell jelentkezni
Na jó nem vagyok genyó. :)
Ez már tökéletesen működik:
import re
filename = ".htaccess"
mimenten = "Require ldap-user"
mit = "ser"
mire = "s3r"
lines = [re.sub('(.*%s.*)%s(.*)' % (mimenten, mit), r'\1%s\2' % (mire), line) for line in open(filename, "r")]
open(filename, "w").writelines(lines)
- A hozzászóláshoz be kell jelentkezni
Kozben megoldottam maskepp, de ez is jol mukodik, koszonom!
- A hozzászóláshoz be kell jelentkezni
Erőforrás-pazarlóbban nem megy?
Olyan szép dolog az a generátor...
import re
filename = ".htaccess"
mimenten = "Require ldap-user"
mit = "ser"
mire = "s3r"
lines = (re.sub('(.*%s.*)%s(.*)' % (mimenten, mit), r'\1%s\2' % (mire), line) for line in open(filename, "r"))
open(filename, "w").writelines(lines)
- A hozzászóláshoz be kell jelentkezni
Ja, jól mondod, így ahogy írod nem megy, viszont igen erőforrás takarékos mert szép üres fájlt generál eredményül. :)
- A hozzászóláshoz be kell jelentkezni