Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python的re模块从以下字符串中获取键值样式信息_Python_Regex - Fatal编程技术网

如何使用python的re模块从以下字符串中获取键值样式信息

如何使用python的re模块从以下字符串中获取键值样式信息,python,regex,Python,Regex,我们有这样一个字符串: 2016-11-10 00:00:44,766 INFO [com.server.log.Log] - <Login Success. userInfo: userID = 140803;appID = 3;channelID = 309;channelUserID = 76ab5a49ea40477f9623074d0d5e0227;userName = 1477806062675.ios.test;channelUserName = l379192229;cr

我们有这样一个字符串:

2016-11-10 00:00:44,766 INFO [com.server.log.Log] - <Login Success. userInfo:  userID = 140803;appID = 3;channelID = 309;channelUserID = 76ab5a49ea40477f9623074d0d5e0227;userName = 1477806062675.ios.test;channelUserName = l379192229;createTime = 2016-10-30 13:41:02.0;loginTime = 1478707244762;userIP = 61.158.146.157;IMEI = FB7FE841-9E54-4421-86E0-1ED625068C57;newUser = false>
现在我想使用python的re模块从字符串中提取键值信息

因此,它应该是一个dict:{'userID':140803'channelid':309…}

给你:

import re

string = """
2016-11-10 00:00:44,766 INFO [com.server.log.Log] - <Login Success. userInfo:  userID = 140803;appID = 3;channelID = 309;channelUserID = 76ab5a49ea40477f9623074d0d5e0227;userName = 1477806062675.ios.test;channelUserName = l379192229;createTime = 2016-10-30 13:41:02.0;loginTime = 1478707244762;userIP = 61.158.146.157;IMEI = FB7FE841-9E54-4421-86E0-1ED625068C57;newUser = false>
"""

rx = re.compile(r'(?P<key>\w+)[ ]*=[ ]*(?P<value>[^;]+)')

result = dict()
for m in rx.finditer(string):
    result[m.group('key')] = m.group('value')
print(result)
# {'userName': '1477806062675.ios.test', 'channelUserName': 'l379192229', 'channelID': '309', 'userID': '140803', 'loginTime': '1478707244762', 'IMEI': 'FB7FE841-9E54-4421-86E0-1ED625068C57', 'appID': '3', 'userIP': '61.158.146.157', 'channelUserID': '76ab5a49ea40477f9623074d0d5e0227', 'newUser': 'false>\n', 'createTime': '2016-10-30 13:41:02.0'}
请参阅。

给您:

import re

string = """
2016-11-10 00:00:44,766 INFO [com.server.log.Log] - <Login Success. userInfo:  userID = 140803;appID = 3;channelID = 309;channelUserID = 76ab5a49ea40477f9623074d0d5e0227;userName = 1477806062675.ios.test;channelUserName = l379192229;createTime = 2016-10-30 13:41:02.0;loginTime = 1478707244762;userIP = 61.158.146.157;IMEI = FB7FE841-9E54-4421-86E0-1ED625068C57;newUser = false>
"""

rx = re.compile(r'(?P<key>\w+)[ ]*=[ ]*(?P<value>[^;]+)')

result = dict()
for m in rx.finditer(string):
    result[m.group('key')] = m.group('value')
print(result)
# {'userName': '1477806062675.ios.test', 'channelUserName': 'l379192229', 'channelID': '309', 'userID': '140803', 'loginTime': '1478707244762', 'IMEI': 'FB7FE841-9E54-4421-86E0-1ED625068C57', 'appID': '3', 'userIP': '61.158.146.157', 'channelUserID': '76ab5a49ea40477f9623074d0d5e0227', 'newUser': 'false>\n', 'createTime': '2016-10-30 13:41:02.0'}

请参阅。

您也可以这样做:

import re

a = """2016-11-10 00:00:44,766 INFO [com.server.log.Log] - <Login Success. userInfo:  userID = 140803;appID = 3;channelID = 309;channelUserID = 76ab5a49ea40477f9623074d0d5e0227;userName = 1477806062675.ios.test;channelUserName = l379192229;createTime = 2016-10-30 13:41:02.0;loginTime = 1478707244762;userIP = 61.158.146.157;IMEI = FB7FE841-9E54-4421-86E0-1ED625068C57;newUser = false>"""
a = [re.split('\s*=\s*',b) for b in re.findall(r'(?:userInfo:\s*)(.*)', a)[0].split(';')]
d = dict(a)
d
步骤:

选择userInfo之后的所有内容: 分道扬镳; 在步骤2中循环浏览列表并在\s*=\s*上拆分。 从步骤3的列表列表中制作一本词典
您也可以这样做:

import re

a = """2016-11-10 00:00:44,766 INFO [com.server.log.Log] - <Login Success. userInfo:  userID = 140803;appID = 3;channelID = 309;channelUserID = 76ab5a49ea40477f9623074d0d5e0227;userName = 1477806062675.ios.test;channelUserName = l379192229;createTime = 2016-10-30 13:41:02.0;loginTime = 1478707244762;userIP = 61.158.146.157;IMEI = FB7FE841-9E54-4421-86E0-1ED625068C57;newUser = false>"""
a = [re.split('\s*=\s*',b) for b in re.findall(r'(?:userInfo:\s*)(.*)', a)[0].split(';')]
d = dict(a)
d
步骤:

选择userInfo之后的所有内容: 分道扬镳; 在步骤2中循环浏览列表并在\s*=\s*上拆分。 从步骤3的列表列表中制作一本词典
到目前为止你有没有尝试过?到目前为止你有没有尝试过?我使用这个模式来获得它:_login_success_pattern='.*userInfo:\s\s.*\s=\s.*=;|*.*\s=\s.*=[;|>]'我使用此模式获取它:uu登录u成功u模式='.*用户信息:\s\s.*?\s=\s.*=;|.*\s=\s.*=[;|>]'