python Unicode字符串拆分/到json转换

时间:2014-08-29 13:32:49

标签: python json unicode

我有一堆Unicode字符串,我正在寻找一种从字符串中提取值的最快方法。

In [161]: data1 = u'NAME: abc\nSchool Name: CD\n________________\nENG: B   \nMat: B   '
In [162]: print data1
NAME: abc
School Name: CD
________________
ENG: B   
Mat: B 

或者,有没有办法在python中使用json处理它。

3 个答案:

答案 0 :(得分:0)

如果您正在尝试获取NAME:,学校名称:等的数据

我会使用字典并拆分数据以插入它。所以代码看起来像这样

data=data1.split("\n")
info={}

for d in data:
    info[d.split(":")[0]]=d.split(":")[1]

然后你可以像这样引用数据的信息:

info["NAME"], info["School Name"]

编辑:不用于循环

您可以根据您要查找的字段执行此操作:

info=data1.split(field)[1].split("\n")[0]

答案 1 :(得分:0)

与@QuinnFTW类似,我会创建一个dict,但我更喜欢dict comprehension for for循环。在dict中获得数据后,您可以使用json.dumps轻松转换为JSON:

data1 = u'NAME: abc\nSchool Name: CD\n________________\nENG: B   \nMat: B   '

data1 = dict((item.strip()
              for item in line.split(':',1))
             for line in data1.splitlines()
             if ':' in line)

from pprint import pprint
pprint(data1)

import json
print json.dumps(data1)

结果:

{u'ENG': u'B', u'Mat': u'B', u'NAME': u'abc', u'School Name': u'CD'}
{"Mat": "B", "NAME": "abc", "School Name": "CD", "ENG": "B"}

答案 2 :(得分:0)

我现在有以下解决方案。

data1 = u'NAME: abc\nSchool Name: CD\n________________\nENG: B   \nMat: B   '

import re
from itertools import izip
data2 = re.split(r'[:\n________________]+',data1)
i = iter(data2)
ans = dict(izip(i, i))