[英]Python 2.7 parsing data
我有如下數據:
data = 'somekey:value4thekey&second-key:valu3-can.be?anything&third_k3y:it%can have spaces;too'
以一種人類易於理解的方式,它看起來像這樣:
somekey : value4thekey
second-key : valu3-can.be?anything
third_k3y : it%can have spaces;too
我應該如何解析數據,以便在執行data['somekey']
會得到>>> value4thekey
?
注意: &
所有不同的項目
我目前如何處理
當前,我使用這個丑陋的解決方案:
all = data.split('&')
for i in all:
if i.startswith('somekey'):
print i
由於多個明顯的限制,該解決方案非常糟糕。 如果我能以某種方式將其解析為python樹對象,那就更好了。
我用&
分割字符串以獲取鍵值字符串列表,然后用:
分割每個字符串以獲取鍵值對。 實際上,使用dict和list的理解使這很優雅:
result = {k:v for k, v in (part.split(':') for part in data.split('&'))}
您可以直接解析你的數據字典-分裂的項目分離&
再上鍵,值分隔再次分裂:
:
table = {
key: value for key, value in
(item.split(':') for item in data.split('&'))
}
這使您可以直接訪問元素,例如,作為table['somekey']
。
如果值中沒有對象,則可以將其解析為字典
structure = {}
for ele in data.split('&'):
ele_split = ele.split(':')
structure[ele_split[0]] = ele_split[1]
現在,您可以使用結構來獲取值:
print structure["somekey"]
#returns "value4thekey"
由於鍵具有“鍵”:“值”形式的通用格式。 您可以將其用作分割參數。
for i in x.split("&"):
print(i.split(":"))
這將生成一個偶數項數組,其中每個偶數索引都是鍵,奇數索引是值。 遍歷數組並將其加載到字典中。 你應該很好!
我將數據格式化為YAML並解析YAML
import re
import yaml
data = 'somekey:value4thekey&second-key:valu3-can.be?anything&third_k3y:it%can have spaces;too'
yaml_data = re.sub('[:]', ': ', re.sub('[&]', '\n', data ))
y = yaml.load(yaml_data)
for k in y:
print "%s : %s" % (k,y[k])
這是輸出:
third_k3y : it%can have spaces;too
somekey : value4thekey
second-key : valu3-can.be?anything
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.