[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [PATCH] Fixed parsing of strings with multiple values in pyudev



oh my god, I totally forgot about the split() parameter :)
thanks

--

  Martin Gracik

----- "Hans de Goede" <hdegoede redhat com> wrote:

> Hi,
> 
> On 02/02/2010 09:42 PM, Martin Gracik wrote:
> > Hi Hans,
> >
> > the problem with this is, that we get some lvm properties, which
> look like this:
> >
> > { 'LVM_SOMETHING' : 'abc LVM_SOMETHING=def LVM_SOMETHING=xyz' }
> >
> > With regular split(), I would have to go over the list, and remove
> the LVM_SOMETHING= parts from [1:] items,
> > re.split() does this for me.
> >
> 
> Erm, no:
> 
> [hans localhost ~]$ python
> Python 2.6.4 (r264:75706, Jan 30 2010, 00:24:32)
> [GCC 4.4.3 20100127 (Red Hat 4.4.3-4)] on linux2
> Type "help", "copyright", "credits" or "license" for more
> information.
>  >>> a = "foo bar=foo2 bar=foo3"
>  >>> a.split(" bar=")
> ['foo', 'foo2', 'foo3']
>  >>>
> 
> 
> 
> > But you're right about the re special chars in name, that would
> break everything.
> > I don't know if there are some special chars allowed in the udev
> properties keys, are they?
> >
> > If yes, I can do it with, .find(), .split(), .replace(), do you
> think it will be a better solution?
> >
> 
> Yes as then you don't have to worry about re special chars in the key,
> and as shown above,
> regular split will handle this just fine.
> 
> Regards,
> 
> Hans
> 
> 
> >
> >
> > --
> >
> >    Martin Gracik
> >
> > ----- "Hans de Goede"<hdegoede redhat com>  wrote:
> >
> >> Hi,
> >>
> >> Why are you using a re.split and not just a regular split,
> >> also what happens if name has any re special chars in it,
> >> is there a re escape function you can use?
> >>
> >> Regards,
> >>
> >> Hans
> >>
> >>
> >> On 02/02/2010 07:48 PM, Martin Gracik wrote:
> >>> Some of the values which are returned by udev are strings,
> >>> which contain more values for the same key.
> >>> The string format is "val1 key=val2 key=val3 ...".
> >>> This fix makes sure we split this string into a list of values.
> >>> ---
> >>>    pyudev.py |    6 ++++++
> >>>    1 files changed, 6 insertions(+), 0 deletions(-)
> >>>
> >>> diff --git a/pyudev.py b/pyudev.py
> >>> index 6ab5d30..a16f9c3 100644
> >>> --- a/pyudev.py
> >>> +++ b/pyudev.py
> >>> @@ -3,6 +3,7 @@ from __future__ import print_function
> >>>    import sys
> >>>    import os
> >>>    import fnmatch
> >>> +import re
> >>>    from ctypes import *
> >>>
> >>>
> >>> @@ -145,6 +146,11 @@ class UdevDevice(dict):
> >>>                name =
> >> libudev_udev_list_entry_get_name(property_entry)
> >>>                value =
> >> libudev_udev_list_entry_get_value(property_entry)
> >>>
> >>> +            # XXX some of the strings contain a list of values
> in
> >> them,
> >>> +            # we want to split them and make a list
> >>> +            if re.match(".* %s=.*" % name, value):
> >>> +                value = re.split(" %s=" % name, value)
> >>> +
> >>>                self[name] = value
> >>>
> >>>                # get next property entry
> >>
> >> _______________________________________________
> >> Anaconda-devel-list mailing list
> >> Anaconda-devel-list redhat com
> >> https://www.redhat.com/mailman/listinfo/anaconda-devel-list
> >
> > _______________________________________________
> > Anaconda-devel-list mailing list
> > Anaconda-devel-list redhat com
> > https://www.redhat.com/mailman/listinfo/anaconda-devel-list
> 
> _______________________________________________
> Anaconda-devel-list mailing list
> Anaconda-devel-list redhat com
> https://www.redhat.com/mailman/listinfo/anaconda-devel-list


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]