Re: Pattern-match Replace - help required
On Wed, 19 Dec 2012 02:42:26 -0800, AT wrote: Hi, I am new to python and web2py framework. Need urgent help to match a pattern in an string and replace the matched text. I've this string (basically an sql statement): stmnt = 'SELECT taxpayer.id, taxpayer.enc_name, taxpayer.age, taxpayer.occupation FROM taxpayer WHERE (taxpayer.id IS NOT NULL);' The requirement is to replace it with this one: r_stmnt = 'SELECT taxpayer.id, decrypt(taxpayer.enc_name), taxpayer.age, taxpayer.occupation FROM taxpayer WHERE (taxpayer.id IS NOT NULL);' Can somebody please help? Can you do this? stmnt = r_stmnt That should do what you are asking. If that doesn't solve your problem, you will need to explain your problem in more detail. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: Pattern-match Replace - help required
On Wednesday, 19 December 2012 15:51:22 UTC+5, Steven D'Aprano wrote: On Wed, 19 Dec 2012 02:42:26 -0800, AT wrote: Hi, I am new to python and web2py framework. Need urgent help to match a pattern in an string and replace the matched text. I've this string (basically an sql statement): stmnt = 'SELECT taxpayer.id, taxpayer.enc_name, taxpayer.age, taxpayer.occupation FROM taxpayer WHERE (taxpayer.id IS NOT NULL);' The requirement is to replace it with this one: r_stmnt = 'SELECT taxpayer.id, decrypt(taxpayer.enc_name), taxpayer.age, taxpayer.occupation FROM taxpayer WHERE (taxpayer.id IS NOT NULL);' Can somebody please help? Can you do this? stmnt = r_stmnt That should do what you are asking. If that doesn't solve your problem, you will need to explain your problem in more detail. -- Steven I just wanted to change taxpayer.enc_name in stmnt to decrypt(taxpayer.enc_name) hope it clarifies? thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: Pattern-match Replace - help required
On Wed, 19 Dec 2012 03:01:32 -0800, AT wrote: I just wanted to change taxpayer.enc_name in stmnt to decrypt(taxpayer.enc_name) hope it clarifies? Maybe. Does this help? lunch = Bread, ham, cheese and tomato. # replace ham with spam offset = lunch.find('ham') if offset != -1: lunch = lunch[:offset] + 'spam' + lunch[offset + len('ham'):] print(lunch) -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: Pattern-match Replace - help required
On Wed, Dec 19, 2012 at 02:42:26AM -0800, AT wrote: Hi, I am new to python and web2py framework. Need urgent help to match a pattern in an string and replace the matched text. Well, what about str.replace then? 'egg, ham, tomato'.replace('ham', 'spam, ham, spam') 'egg, spam, ham, spam, tomato' If the pattern you want to match is more complicated, have a look at the re module! Regards, Thomas. -- http://mail.python.org/mailman/listinfo/python-list
Re: Pattern-match Replace - help required
On Wednesday, 19 December 2012 16:27:19 UTC+5, Thomas Bach wrote: On Wed, Dec 19, 2012 at 02:42:26AM -0800, AT wrote: Hi, I am new to python and web2py framework. Need urgent help to match a pattern in an string and replace the matched text. Well, what about str.replace then? 'egg, ham, tomato'.replace('ham', 'spam, ham, spam') 'egg, spam, ham, spam, tomato' If the pattern you want to match is more complicated, have a look at the re module! Regards, Thomas. The pattern is '%s.enc_%s', and after matching this pattern want to change it to 'decrypt(%s.enc_%s)' Thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: Pattern-match Replace - help required
AT wrote: I am new to python and web2py framework. Need urgent help to match a pattern in an string and replace the matched text. I've this string (basically an sql statement): stmnt = 'SELECT taxpayer.id, taxpayer.enc_name, taxpayer.age, taxpayer.occupation FROM taxpayer WHERE (taxpayer.id IS NOT NULL);' The requirement is to replace it with this one: r_stmnt = 'SELECT taxpayer.id, decrypt(taxpayer.enc_name), taxpayer.age, taxpayer.occupation FROM taxpayer WHERE (taxpayer.id IS NOT NULL);' Can somebody please help? The pattern is '%s.enc_%s', and after matching this pattern want to change it to 'decrypt(%s.enc_%s)' after = re.compile(r(\w+[.]enc_\w+)).sub(rdecrypt(\1), before) -- http://mail.python.org/mailman/listinfo/python-list
Re: Pattern-match Replace - help required
On Wednesday, 19 December 2012 18:16:18 UTC+5, Peter Otten wrote: AT wrote: I am new to python and web2py framework. Need urgent help to match a pattern in an string and replace the matched text. I've this string (basically an sql statement): stmnt = 'SELECT taxpayer.id, taxpayer.enc_name, taxpayer.age, taxpayer.occupation FROM taxpayer WHERE (taxpayer.id IS NOT NULL);' The requirement is to replace it with this one: r_stmnt = 'SELECT taxpayer.id, decrypt(taxpayer.enc_name), taxpayer.age, taxpayer.occupation FROM taxpayer WHERE (taxpayer.id IS NOT NULL);' Can somebody please help? The pattern is '%s.enc_%s', and after matching this pattern want to change it to 'decrypt(%s.enc_%s)' after = re.compile(r(\w+[.]enc_\w+)).sub(rdecrypt(\1), before) Thanks a million Can you recommend a good online book/tutorial on regular expr. in python? Regards -- http://mail.python.org/mailman/listinfo/python-list
Re: Pattern-match Replace - help required
Am 19.12.2012 14:41, schrieb AT: Thanks a million Can you recommend a good online book/tutorial on regular expr. in python? http://docs.python.org/3/howto/regex.html -- http://mail.python.org/mailman/listinfo/python-list
Re: Pattern-match Replace - help required
On 2012-12-19 14:11, Alexander Blinne wrote: Am 19.12.2012 14:41, schrieb AT: Thanks a million Can you recommend a good online book/tutorial on regular expr. in python? http://docs.python.org/3/howto/regex.html Another good resource is: http://www.regular-expressions.info/ -- http://mail.python.org/mailman/listinfo/python-list
Re: pattern match !
On Jul 11, 9:29 pm, Helmut Jarausch [EMAIL PROTECTED] wrote: import re P=re.compile(r'(\w+(?:[-.]\d+)+)-RHEL3-Linux\.RPM') S=hpsmh-1.1.1.2-0-RHEL3-Linux.RPM PO= P.match(S) if PO : print PO.group(1) Isn't a regexp overkill here when this will do: head = filename[:filename.index('-RHEL3')] Of course if you need to make it more generic (as in Jay's solution below), re is the way to go. -- http://mail.python.org/mailman/listinfo/python-list
Re: pattern match !
[EMAIL PROTECTED] wrote: A slightly more generic match in case your package names turn out to be less consistent than given in the test cases: #!/usr/bin/python import re pattern = re.compile(r'(\w+?-(\d+[\.-])+\d+?)-\D+.*RPM') pkgnames = [hpsmh-1.1.1.2-0-RHEL3-Linux.RPM, hpsmh-1.1.1.2-RHEL3-Linux.RPM] for pkg in pkgnames: matchObj = pattern.search(pkg) if matchObj: print matchObj.group(1) Still assumes it will end in RPM (all caps), but if you add the flag re.I to the re.compile() call, it will match case-insensitive. Hope that helps, -Jay How about if i had something like 1-3 words in the application name: websphere-pk543-1.1.4.2-1-RHEL3-i386.rpm (in this case are 2 words)? Try this instead then: #!/usr/bin/python import re pattern = re.compile(r'((\w+?-)+?(\d+[\.-])+\d+?)-\D+.*RPM', re.I) pkgnames = [hpsmh-1.1.1.2-0-RHEL3-Linux.RPM, hpsmh-1.1.1.2-RHEL3-Linux.RPM, websphere-pk543-1.1.4.2-1-RHEL3-i386.rpm] for pkg in pkgnames: matchObj = pattern.search(pkg) if matchObj: print matchObj.group(1) -- http://mail.python.org/mailman/listinfo/python-list
Re: pattern match !
[EMAIL PROTECTED] wrote: Extract the application name with version from an RPM string like hpsmh-1.1.1.2-0-RHEL3-Linux.RPM, i require to extract hpsmh-1.1.1.2-0 from above string. Sometimes the RPM string may be hpsmh-1.1.1.2-RHEL3- Linux.RPM. Have a try with import re P=re.compile(r'(\w+(?:[-.]\d+)+)-RHEL3-Linux\.RPM') S=hpsmh-1.1.1.2-0-RHEL3-Linux.RPM PO= P.match(S) if PO : print PO.group(1) -- Helmut Jarausch Lehrstuhl fuer Numerische Mathematik RWTH - Aachen University D 52056 Aachen, Germany -- http://mail.python.org/mailman/listinfo/python-list
Re: pattern match !
Helmut Jarausch wrote: [EMAIL PROTECTED] wrote: Extract the application name with version from an RPM string like hpsmh-1.1.1.2-0-RHEL3-Linux.RPM, i require to extract hpsmh-1.1.1.2-0 from above string. Sometimes the RPM string may be hpsmh-1.1.1.2-RHEL3- Linux.RPM. Have a try with import re P=re.compile(r'(\w+(?:[-.]\d+)+)-RHEL3-Linux\.RPM') S=hpsmh-1.1.1.2-0-RHEL3-Linux.RPM PO= P.match(S) if PO : print PO.group(1) A slightly more generic match in case your package names turn out to be less consistent than given in the test cases: #!/usr/bin/python import re pattern = re.compile(r'(\w+?-(\d+[\.-])+\d+?)-\D+.*RPM') pkgnames = [hpsmh-1.1.1.2-0-RHEL3-Linux.RPM, hpsmh-1.1.1.2-RHEL3-Linux.RPM] for pkg in pkgnames: matchObj = pattern.search(pkg) if matchObj: print matchObj.group(1) Still assumes it will end in RPM (all caps), but if you add the flag re.I to the re.compile() call, it will match case-insensitive. Hope that helps, -Jay -- http://mail.python.org/mailman/listinfo/python-list
Re: pattern match !
On Wed, 11 Jul 2007 03:40:06 +, hari.siri74 wrote: Extract the application name with version from an RPM string like hpsmh-1.1.1.2-0-RHEL3-Linux.RPM, i require to extract hpsmh-1.1.1.2-0 from above string. Sometimes the RPM string may be hpsmh-1.1.1.2-RHEL3- Linux.RPM. Thank you for sharing. The answer to your problem is here: http://tinyurl.com/anel -- Steven. -- http://mail.python.org/mailman/listinfo/python-list
Re: pattern match !
On Jul 11, 1:40 pm, [EMAIL PROTECTED] wrote: Extract the application name with version from an RPM string like hpsmh-1.1.1.2-0-RHEL3-Linux.RPM, i require to extract hpsmh-1.1.1.2-0 from above string. Sometimes the RPM string may be hpsmh-1.1.1.2-RHEL3- Linux.RPM. Now that list-like splicing and indexing works on strings, why not just splice the string, using .index to locate '-RHEL'? -- http://mail.python.org/mailman/listinfo/python-list