Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #109219 > unrolled thread

re.search - Pattern matching review

Started byGanesh Pal <ganesh1pal@gmail.com>
First post2016-05-28 23:42 +0530
Last post2016-05-28 23:42 +0530
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  re.search - Pattern matching review Ganesh Pal <ganesh1pal@gmail.com> - 2016-05-28 23:42 +0530

#109219 — re.search - Pattern matching review

FromGanesh Pal <ganesh1pal@gmail.com>
Date2016-05-28 23:42 +0530
Subjectre.search - Pattern matching review
Message-ID<mailman.13.1464459137.1839.python-list@python.org>
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

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web