проблема разбить строку - PullRequest
       2

проблема разбить строку

3 голосов
/ 18 августа 2011

Я написал программу для чтения записи реестра из файла.И запись выглядит так:

reg='HKEY_LOCAL_MACHINE\SOFTWARE\TT\Tools\SYS\exePath' #it means rootKey=HKEY_LOCAL_MACHINE, subKey='SOFTWARE\TT\Tools\SYS', property=exePath

Я хочу прочитать эту запись из файла и разбить ее на rootKey, subKey и property.Видимо, я могу сделать это так:

rootKey = reg.split('\\', 1)[0]
subKey = reg.split('\\', 1)[1].rsplit('\\', 1)[0]  #might be a stupid way
property = reg.rsplit('\\, 1)[1]

Может быть, запись глупая, но есть ли лучший способ разбить ее на части, как указано выше?

Ответы [ 3 ]

4 голосов
/ 18 августа 2011
import re

t=re.search(r"(.+?)\\(.+)\\(.+)", reg)
t.groups()
('HKEY_LOCAL_MACHINE', 'SOFTWARE\\TT\\Tools\\SYS', 'exePath')
2 голосов
/ 18 августа 2011

Как насчет следующих действий? Нет необходимости звонить .split() столько раз, во всяком случае ...

s = reg.split('\\')
property = s.pop()
root_key = s.pop(0)
sub_key = '\\'.join(s)
0 голосов
/ 22 марта 2012

Мне нравится использовать partition над split, когда могу, потому что partition гарантирует, что каждый из возвращаемых элементов кортежа является строкой.

root_key, _, s       = reg.partition("\\")
_, sub_key, property = s.rpartition("\\") # note, _r_partition
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...