python Unicode字符串拆分/ json转换
问题描述:
我有一串Unicode字符串,我正在寻找一种最快捷的方式从字符串中提取值。python Unicode字符串拆分/ json转换
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来处理它。
答
我有以下解决方案现在的工作。
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))
答
如果你想获得的数据名称:,学校名称:等
我会用字典和分割数据,将其插入。因此,代码会是这个样子
data=data1.split("\n")
info={}
for d in data:
info[d.split(":")[0]]=d.split(":")[1]
那么你可以参考的信息的数据,像这样:
info["NAME"], info["School Name"]
等
编辑:没有for循环
,你可以,根据你正在寻找哪个领域,这样做:
info=data1.split(field)[1].split("\n")[0]
答
与@QuinnFTW类似,我会创建一个字典,但我更喜欢字典理解for循环。一旦你在字典中的数据,可以用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"}
什么样的容器容纳“串”串?一个列表?一个文本文件?还有别的吗? – 2014-08-29 13:41:07
一次的字符串数量与示例类似,但我有大约50个字段。 – hashmuke 2014-08-29 13:54:14