如何使用Python制作grep

时间:2014-04-15 09:50:41

标签: python sed grep

请帮助我。 我有一些API命令结果:

[{u'task': {u'url': u'http://192.168.1.1/job/f1111111111/', u'color': u'aborted', u'name': u'f1111111111'}, u'stuck': False, u'url': u'queue/item/37/', u'inQueueSince': 1397554800875L, u'actions': [{u'causes': [{u'userName': u'admin', u'userId': u'admin', u'shortDescription': u'Started by user admin'}]}], u'why': u'Waiting for next available executor on NODE_1', u'buildable': True, u'params': u'', u'buildableStartMilliseconds': 1397554800878L, u'id': 37, u'pending': False, u'blocked': False}, {u'task': {u'url': u'http://192.168.1.1/job/1234/', u'color': u'aborted', u'name': u'1234'}, u'stuck': False, u'url': u'queue/item/36/', u'inQueueSince': 1397554797741L, u'actions': [{u'causes': [{u'userName': u'admin', u'userId': u'admin', u'shortDescription': u'Started by user admin'}]}], u'why': u'Waiting for next available executor on NODE_1', u'buildable': True, u'params': u'', u'buildableStartMilliseconds': 1397554797744L, u'id': 36, u'pending': False, u'blocked': False}]

如何使用PYthon制作grep以获得下一个输出:

你的名字':你' f1111111111'

u' name':u' 1234

2 个答案:

答案 0 :(得分:3)

Normaly你只使用grep(或正则表达式)来获取字符串文字中的结构。在你的情况下,你已经得到了一种结构化的结果,因此你应该能够迭代它。 (=解析速度快得多)

  for row in result:  #iterate over the result list
    # do something with the row
    print row["task"]["name"] #access particular key

理想情况是将结果转换为自定义字典相似的结构,您可以直接访问结果属性,例如row.task.name。如何到达那里很好地解释了here

答案 1 :(得分:2)

你最好像这样循环你的字符串:

>>> s=[{u'task': {u'url': u'http://192.168.1.1/job/f1111111111/', u'color': u'aborted', u'name': u'f1111111111'}, u'stuck': False, u'url': u'queue/item/37/', u'inQueueSince': 1397554800875L, u'actions': [{u'causes': [{u'userName': u'admin', u'userId': u'admin', u'shortDescription': u'Started by user admin'}]}], u'why': u'Waiting for next available executor on NODE_1', u'buildable': True, u'params': u'', u'buildableStartMilliseconds': 1397554800878L, u'id': 37, u'pending': False, u'blocked': False}, {u'task': {u'url': u'http://192.168.1.1/job/1234/', u'color': u'aborted', u'name': u'1234'}, u'stuck': False, u'url': u'queue/item/36/', u'inQueueSince': 1397554797741L, u'actions': [{u'causes': [{u'userName': u'admin', u'userId': u'admin', u'shortDescription': u'Started by user admin'}]}], u'why': u'Waiting for next available executor on NODE_1', u'buildable': True, u'params': u'', u'buildableStartMilliseconds': 1397554797744L, u'id': 36, u'pending': False, u'blocked': False}]
>>> for i in s:
...     print i['task']['name']
... 
f1111111111
1234

您可以将信息存储在列表中:

>>> l=[]
>>> for i in s:
...     l.append(i['task']['name'])
... 
>>> 
>>> print l
[u'f1111111111', u'1234']