python script kerdes

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.

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

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.

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>

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)

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)