博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
取文本里的文本转Json(记录)
阅读量:6914 次
发布时间:2019-06-27

本文共 3004 字,大约阅读时间需要 10 分钟。

只是单纯的很幼稚的做法 也许绕了很大很大的弯

Json的应用我还不太了解
文本里的内容大致:

>>> f=open('222.txt','r')>>> a=f.read()>>> f.close()>>> print aappid:c50000100_h50001 flow:0.00243473 mo:CUCC ip:192.168.1.176appid:c50000103_t50004 flow:207.359 mo:CUCC ip:192.168.1.119appid:c50000100_t50011 flow:5.72205e-06 mo:CUCC ip:192.168.1.19appid:c50000100_h50000 flow:0.104045 mo:CUCC ip:192.168.1.10

第一次正则匹配:

import re>>> b=re.compile(r"appid:(.*?)\s*flow:(.*?)\s*mo:(.*?)\s*ip:(.*?)\n").findall(a)>>> print b[('c50000100_h50001', '0.00243473', 'CUCC', '192.168.1.176'), ('c50000103_t50004', '207.359', 'CUCC', '192.168.1.119'), ('c50000100_t50011', '5.72205e-06', 'CUCC', '192.168.1.19')]#List包含Tuple>>> import json>>> j=json.dumps(b)>>> print j[["c50000100_h50001", "0.00243473", "CUCC", "192.168.1.176"], ["c50000103_t50004", "207.359", "CUCC", "192.168.1.119"], ["c50000100_t50011", "5.72205e-06", "CUCC", "192.168.1.19"]]

问题:

1.因为行末换行符的关系最后一行没有匹配到
2.Json的格式是List包含List(Json叫做数组Array)[[]];需要的形式是List包含Dictobject等同于Python的dict

第二次正则匹配:

>>> b=re.compile(r"appid:(.*?)\s*flow:(.*?)\s*mo:(.*?)\s*ip:(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})").findall(a)>>> print b[('c50000100_h50001', '0.00243473', 'CUCC', '192.168.1.176'), ('c50000103_t50004', '207.359', 'CUCC', '192.168.1.119'), ('c50000100_t50011', '5.72205e-06', 'CUCC', '192.168.1.19'), ('c50000100_h50000', '0.104045', 'CUCC', '192.168.1.10')]#通过直接匹配最后的IP地址,全部匹配>>> d={}>>> l=[]>>> for i in range(len(b)):    d['appid']=b[i][0]    d['flow']=b[i][1]    d['mo']=b[i][2]    d['ip']=b[i][3]    l.append(d)    d={} #没有这句一直只赋值最后一个。。。搞了半天 略囧>>> print l[{'ip': '192.168.1.176', 'mo': 'CUCC', 'flow': '0.00243473', 'appid': 'c50000100_h50001'}, {'ip': '192.168.1.119', 'mo': 'CUCC', 'flow': '207.359', 'appid': 'c50000103_t50004'}, {'ip': '192.168.1.19', 'mo': 'CUCC', 'flow': '5.72205e-06', 'appid': 'c50000100_t50011'}, {'ip': '192.168.1.10', 'mo': 'CUCC', 'flow': '0.104045', 'appid': 'c50000100_h50000'}]#得到了List包含Dict>>> import json>>> j=json.dumps(l)>>> print j[{"ip": "192.168.1.176", "mo": "CUCC", "flow": "0.00243473", "appid": "c50000100_h50001"}, {"ip": "192.168.1.119", "mo": "CUCC", "flow": "207.359", "appid": "c50000103_t50004"}, {"ip": "192.168.1.19", "mo": "CUCC", "flow": "5.72205e-06", "appid": "c50000100_t50011"}, {"ip": "192.168.1.10", "mo": "CUCC", "flow": "0.104045", "appid": "c50000100_h50000"}]#转成Json也正常

附一种脑洞大开的写法:

>>> l=[]>>> d={}>>> f=open('222.txt','r')>>> for line in open('222.txt'):    s=f.readline()    s=s.replace('\n','')    for i in range(4):        d[(((s.split(' '))[i]).split(':'))[0]]=(((s.split(' '))[i]).split(':'))[1]    l.append(d)    d={}>>> print l[{'ip': '192.168.1.176', 'mo': 'CUCC', 'flow': '0.00243473', 'appid': 'c50000100_h50001'}, {'ip': '192.168.1.119', 'mo': 'CUCC', 'flow': '207.359', 'appid': 'c50000103_t50004'}, {'ip': '192.168.1.19', 'mo': 'CUCC', 'flow': '5.72205e-06', 'appid': 'c50000100_t50011'}, {'ip': '192.168.1.10', 'mo': 'CUCC', 'flow': '0.104045', 'appid': 'c50000100_h50000'}]

转载于:https://www.cnblogs.com/guitar-tec/p/4762159.html

你可能感兴趣的文章
Gradle 1.12用户指南翻译——第三十六章. Sonar Runner 插件
查看>>
基于HTTP 协议认证介绍与实现
查看>>
(原創) 如何寫一個加法器? (C/C++) (SystemC) (IC Design)
查看>>
Npoi导入导出Excel操作
查看>>
说说接口封装
查看>>
TCP/IP建立连接与终止连接
查看>>
asp.net 中页面缓存 ,数据源缓存,自定义缓存
查看>>
[九度][何海涛] 翻转单词顺序
查看>>
微信相关的应用
查看>>
将数组适配到ListView
查看>>
Olivia Palermo & Johannes Huebl 模范情侣
查看>>
[geeksforgeeks] Convert a given Binary Tree to Doubly Linked List
查看>>
android mk详解
查看>>
程序员与禅的对话录
查看>>
【mysql】执行mysql脚本
查看>>
ASP.NET 时间方法大全
查看>>
git 查看远程分支、本地分支、创建分支、把分支推到远程repository、删除本地分支...
查看>>
scp 使用
查看>>
Shell命令_awk命令
查看>>
获取某行某列的值
查看>>