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@xxxxxxxxxx> 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@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list