2011-08-18 71 views
3

我編寫了一個程序從文件中讀取註冊表項。 和條目看起來是這樣的:關於拆分字符串的問題

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

我想從文件中讀取這個條目,並將其打入rootKey,子項和財產。 顯然,我能做到這樣:

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

也許條目是愚蠢的,但沒有更好的辦法來打破它分成幾部分像上面?

+0

使用原始字符串---'reg.split(R '\')' – agf

+1

看起來有在這裏回答過類似的問題 http://stackoverflow.com/questions/5833441/is-there -a-pure-python-library-for-parsing-a-windows-registry-file – severb

回答

4
import re 

t=re.search(r"(.+?)\\(.+)\\(.+)", reg) 
t.groups() 
('HKEY_LOCAL_MACHINE', 'SOFTWARE\\TT\\Tools\\SYS', 'exePath') 
+0

不錯。謝謝。 – Alcott

2

如何進行以下操作?有沒有必要打電話.split()這麼多次,反正...

s = reg.split('\\') 
property = s.pop() 
root_key = s.pop(0) 
sub_key = '\\'.join(s) 
+0

是的,漂亮的工作人員。謝謝 – Alcott

0

我喜歡用partition超過split時,我可以,因爲partition確保每個元組返回元素是一個字符串。

root_key, _, s  = reg.partition("\\") 
_, sub_key, property = s.rpartition("\\") # note, _r_partition