代码: 全选
answer
cookietime 2592000
formhash b0985d1d
loginfield username
password 11111111
questionid 0
username ffffffff
写一个vim函数,当选中这些行,执行这个函数后,这些行变成一个python字典
空白左边的是键,右面是键值
比如{"cookietime":"2592000","answer":""}
右边没有的键值是空白字符串
高手帮忙啊

代码: 全选
answer
cookietime 2592000
formhash b0985d1d
loginfield username
password 11111111
questionid 0
username ffffffff
如果你是一次性用的话,还不如用python解析这个文本呢,本人不会vim脚本,帮顶acer4740 写了:代码: 全选
answer cookietime 2592000 formhash b0985d1d loginfield username password 11111111 questionid 0 username ffffffff
写一个vim函数,当选中这些行,执行这个函数后,这些行变成一个python字典
空白左边的是键,右面是键值
比如{"cookietime":"2592000","answer":""}
右边没有的键值是空白字符串
高手帮忙啊
fanhe 写了:[vim]function! g:Fun()
let nStart = line("'<")
let nEnd = line("'>")
let lLines = getline(nStart, nEnd)
let dResult = {}
for sLine in lLines
let li = split(sLine)
let sKey = get(li, 0, '')
let sValue = get(li, 1, '')
let dResult[sKey] = sValue
endfor
return string(dResult)
endfunc
[/vim]
先选择,退出,然后 :echo g:Fun()
返回类似字典的字符串,如果想要字典,就把 return 行改为 return dResult
代码: 全选
function Cont() range
execute a:firstline . "," . a:lastline . 's/^\s*/"/'
execute a:firstline . "," . a:lastline . 's/\s\+\|$/":"/'
execute a:firstline . "," . a:lastline . 's/$/",\\/'
execute a:firstline . 's/^/{/'
execute a:lastline . 's/,\\$/}/'
unsilent echo (a:lastline - a:firstline +1) . " item in dict"
endfunction
command -range TODict :silent <line1>,<line2>call Cont()
代码: 全选
vmap <leader>vs :'<,'>s/\(\S*\)\s*\(\S*\)/"\1":"\2",/<CR>\|:normal! `<I{<esc>`>A}<esc>