【问题标题】:Can anyone help me with the regex for the following example?任何人都可以帮助我使用以下示例的正则表达式吗?
【发布时间】:2018-05-04 05:25:32
【问题描述】:

样本数据:

"PlayerId":169193,"PlayerName":"Alexandre Lacazette","PlaysOnHomeTeam":true,"OptaId":"p59966","GoalsConcededInBox":1,"ShotsInsideBox":8,"ShotsWoodwork":1,"TotalPasses":31,"PassSuccess":23,"KeyPasses":5,"DribblesAttempted":3,"DribblesWon":2,"AerialsWon":5,"AerialsLost":2,"TacklesSuccess":3,"TacklesAttempted":3

我想要的是一个包含引号内数据的列表,即 玩家ID 选手姓名 PlaysOnHomeTeam 光学标识符 .. .. ..

谁能告诉我实现这个的正则表达式

【问题讨论】:

  • 它看起来像一个 dict ,如果是这样你可以拿走所有的钥匙..
  • 你想要PlayerId还是169193
  • 不,是字符串
  • @MasOOd.KamYab PlayerId
  • 我知道它是一个字符串,但它看起来像一个 JSON 格式的字符串。当然你可以编写一个正则表达式来解析它,但如果它是有效的 JSON,你最好使用 python 中内置的 JSON 实用程序来解析它。

标签: python regex split


【解决方案1】:

你可以用这个:

,?"(\w+)":

解释:

,? 据说它占用了 , 的 0 或 1 个

"在句子之前。

(\w+) 是你想要的。就是字字a-zA-Z0-9_

句后"

example

【讨论】:

  • \w 不是某个字符,它是单词字符 a-zA-Z0-9_
【解决方案2】:

如果您只想要每对的左侧字符串:

import json
s = '{'+ '''"PlayerId":169193,"PlayerName":"Alexandre Lacazette","PlaysOnHomeTeam":true,"OptaId":"p59966","GoalsConcededInBox":1,"ShotsInsideBox":8,"ShotsWoodwork":1,"TotalPasses":31,"PassSuccess":23,"KeyPasses":5,"DribblesAttempted":3,"DribblesWon":2,"AerialsWon":5,"AerialsLost":2,"TacklesSuccess":3,"TacklesAttempted":3''' + '}'
list(json.loads(s))

输出:

['PlayerId', 'PlayerName', 'PlaysOnHomeTeam', 'OptaId', 'GoalsConcededInBox', 'ShotsInsideBox', 'ShotsWoodwork', 'TotalPasses', 'PassSuccess', 'KeyPasses', 'DribblesAttempted', 'DribblesWon', 'AerialsWon', 'AerialsLost', 'TacklesSuccess', 'TacklesAttempted']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    相关资源
    最近更新 更多