1
leavic 2015-09-10 00:52:21 +08:00
为啥要正则,每行作为一个序列,第一行直接全部做 title ,后面的直接以“:” split 去[-1]项就行了啊
|
2
ri0day OP @leavic 忘记说明了。这个文本其实是一个邮件的 body,邮件有可能不按上面的文字顺序.也有可能会多一些文字.
不过你的方法 对上面那个格式确实可以得到我要的效果.谢谢思路 我最理想的方式是 类似 re.match ('用户:+(.*)',msg ).group ()这样 |
3
ljdawn 2015-09-10 09:13:20 +08:00
需要一个简单的文本状态机。 没匹配到另一个状态就继续。
|
4
ri0day OP 借用楼上 2 个的思路,基本弄出来了
#-coding:utf-8 d={} with open ('msg2.txt','r') as f: for i in f.readlines (): if ':' not in i and not i.startswith ('\n'): title = i d['title'] = i elif i.isspace (): pass else: #print i.strip () key , value = i.split (':') d[key] = value.strip () for k, v in d.items (): print k.decode ('utf-8')+':'+v.decode ('utf-8') |