Python读取字符串中的标签,json?

2024-06-16 10:51:30 发布

您现在位置:Python中文网/ 问答频道 /正文

对于pylms python库中没有包含的函数,我使用的是logitech媒体服务器的telnetapi。在

我在处理一个请求的响应。在

下面是作为单个字符串的响应示例

players 0 2 count:2 playerindex:0 playerid:a5:41:d2:cd:cd:05 ip:127.0.0.1:60488 name:127.0.0.1 model:softsqueeze displaytype:graphic-280x16 connected:1 playerindex:1 playerid:00:04:20:02:00:c8 ip:192.168.1.22:3483 name:Movy model:slimp3 displaytype:noritake-katakana connected:1

我想为上面的例子提取name和ip标签。在网上看这个json格式吗?我试着用json.load文件以及json.dump文件python模块,但运气不好。我得到的东西正在使用。split(" ")然后split(":")但是当一个标记由两个单词组成,即包含一个空格时,这就失败了。在

总结一下,我如何获得“name:”标签的列表?在


Tags: 文件函数nameipjsonmodelcd标签
2条回答

尝试使用regular expression来提取信息。我没有在Python中尝试过,但是我认为this应该可以工作。如果你告诉我们预期的结果会有帮助。在

import re
regex = re.compile("ip:([^\\ ]{0,})\\ name:([^\\ ]{0,})")
testString = "" # fill this in
matchArray = regex.findall(testString)
# the matchArray variable contains the list of matches

(来自debuggex.com网站代码段)

我不确定您想要的确切输出类型,但我想我有一个想法,如何使用regex创建一个有用的数据结构,带有'name'和{}标记。在

来自repl:

In [38]: str = 'players 0 2 count:2 playerindex:0 playerid:a5:41:d2:cd:cd:05 ip:127.0.0.1:60488 name:127.0.0.1 model:softsqueeze displaytype:graphic-280x16 connected:1 playerindex:1 playerid:00:04:20:02:00:c8 ip:192.168.1.22:3483 name:Movy model:slimp3 displaytype:noritake-katakana connected:1'

In [39]: regex = re.compile(r'([^:]+):(\S+)\s')

In [40]: regex.findall(str)
Out[40]: 
[('players 0 2 count', '2'),
 ('playerindex', '0'),
 ('playerid', 'a5:41:d2:cd:cd:05'),
 ('ip', '127.0.0.1:60488'),
 ('name', '127.0.0.1'),
 ('model', 'softsqueeze'),
 ('displaytype', 'graphic-280x16'),
 ('connected', '1'),
 ('playerindex', '1'),
 ('playerid', '00:04:20:02:00:c8'),
 ('ip', '192.168.1.22:3483'),
 ('name', 'Movy'),
 ('model', 'slimp3'),
 ('displaytype', 'noritake-katakana')]

要提取名称和ip标记,可以使用list comprehension

^{pr2}$

正则表达式

^{3}$

工作原理如下:

首先,([^:]+)匹配除:之外的所有内容一次或多次,正则表达式这一部分周围的括号将其存储为匹配的第一次捕获。在

:文本与:匹配。在

(\S+)匹配除空格以外的所有内容,一次或多次(由于+),括号使其成为匹配捕获的第二部分。在

\s匹配一个空格,这似乎分隔了所有记录。在

调用regex.findall(str)尝试尽可能多次匹配str上的regex。输出是2元组的list,其中每个元组的第一个元素是来自正则表达式的第一个捕获括号的匹配,第二个元素是来自正则表达式的第二个捕获括号的匹配。在

请参见http://docs.python.org/2/library/re.html以获取有关Python中regex的更多详细信息。在

相关问题 更多 >