Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #109219
| From | Ganesh Pal <ganesh1pal@gmail.com> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | re.search - Pattern matching review |
| Date | 2016-05-28 23:42 +0530 |
| Message-ID | <mailman.13.1464459137.1839.python-list@python.org> (permalink) |
| References | <CACT3xuVzgYxA_Yb4LngimMpp1zhBAz5qwY1o0qcoYZ+WMtUdAQ@mail.gmail.com> |
Dear Python friends,
I am on Python 2.7 and Linux . I am trying to extract the address
"1,5,147456:8192" from the below stdout using re.search
(Pdb) stdout
'linux-host-machine-1: Block Address for 1,5,27320320:8192 (block
1,5,147456:8192) --\nlinux-host-machine-1: magic
0xdeaff2fe mark_cookie 0x300000000000000a\n'
(Pdb) type(stdout)
<type 'str'>
Here is the code I have come up with, this looks buggy please review
the same and suggest any better ways to code the same
the same may be splitlines() , re.complie() etc , my intention is to
just match 1,5,147456:8192 and return the same.
#Sample code
import re
import subprocess_run
def get_block():
try:
cmd = "get_block_info -l"
# stdout is the output retrieved by subprocess.Popen()
stdout, stderr, exitcode = subprocess_run(cmd)
search_pat = 'Block Address.* \(block (\d+),(\d+),(\d+):(\d+)'
matched = re.search(search_pat, stdout)
block = (int(matched.group(1)),
int(matched.group(2)),
int(matched.group(3)),
int(matched.group(4)),
)
except IOError, e:
logging.warning('Error reading lines from "%s" (%s).'
% (cmd, e))
if block is None:
logging.error("block not found")
return False
logging.info("block not found")
return block
Regards,
Ganesh
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
re.search - Pattern matching review Ganesh Pal <ganesh1pal@gmail.com> - 2016-05-28 23:42 +0530
csiph-web