python - 在对 API 的 python 调用中使用正则表达式来清理返回

标签 python regex

以下 Python 脚本:

def lookup(guildname):
    try:
        guildname = gw2api.get_guild_details(guildid)
        return guildname
    except:
        return''

返回结果如下所示:(每个都是单行)

{u'emblem': {u'foreground_secondary_color_id': 443, u'foreground_primary_color_id': 584, u'foreground_id': 107, u'background_id': 27, u'flags': [], u'background_color_id': 11}, u'guild_id': u'4FAEB34C-BA01-49C8-AD19-C651D69F9981', u'tag': u'RAWK', u'guild_name': u'Ready And Willing Knights'}
{u'emblem': {u'foreground_secondary_color_id': 443, u'foreground_primary_color_id': 11, u'foreground_id': 144, u'background_id': 22, u'flags': [u'FlipBackgroundHorizontal'], u'background_color_id': 4}, u'guild_id': u'DDE74A26-FC28-4514-926D-9BB590E6BDD2', u'tag': u'AI', u'guild_name': u'Alchemy Incorporated'}
{u'emblem': {u'foreground_secondary_color_id': 64, u'foreground_primary_color_id': 146, u'foreground_id': 148, u'background_id': 21, u'flags': [], u'background_color_id': 617}, u'guild_id': u'190E573E-8970-440E-8EA1-653098296EDB', u'tag': u'RoMS', u'guild_name': u'Roses Of The Moonlight Sigil'}

使用正则表达式我想我可以获得公会名称

([A-Z0-9a-z-]*\b [A-Z0-9a-z-]*)

但是我如何将它应用到上面的 python 脚本中呢?它只需要返回唯一的公会名称,例如 Roses Of The Moonlight SigilAlchemy Incorporated 而不是那个巨大的大块。不太确定我的表达是否正确

使用适当的函数编辑:

import json, gw2api

getguild = gw2api.get_servers()
guildapi = json.dumps(getguild)
apiresult = json.loads(guildapi)

print apiresult['name']

最佳答案

使用json.loads() ,然后将其作为普通字典访问。不需要正则表达式:

import json
...
return json.loads(guildname)

thedict = the_one_returned
print thedict['guild_name']
# Prints Ready And Willing Knights

关于python - 在对 API 的 python 调用中使用正则表达式来清理返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17501930/

相关文章:

python - Pandas:根据 bool 列表/字典替换数据框列

javascript - JS 正则表达式帮助匹配 URL

javascript - 坚持使用 Javascript 中的正则表达式

python 字符串作为十六进制以 null 结尾

python - 条件为负整数

python - 获取IP地址的前三个字节

java - 如何替换正则表达式的内容

python - Instagram 检测 python 请求

regex - sed 尝试用另一个字符串替换字符串

正则表达式重复 aa,bb,cc