【问题标题】:How to create a list from api reponse and remove duplicates如何从 api 响应创建列表并删除重复项
【发布时间】:2019-06-04 21:15:03
【问题描述】:

我想从 api json 响应中创建一个列表,如 jira 中的每个票证所示,并删除所有重复项

我可以获取每张票的值,但无法将其作为列表并从中删除重复项以进行处理

这是每张票的 api json 响应

response = {
    "expand": "renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations",
    "id": "1831845",
    "self": "https://jira.com/login/rest/api/latest/issue/1845",
    "key": "pc-1002",
    "fields": {
                 "customfield_1925": {
                    "self": "https://jira.com/login/rest/api/2/customFieldOption/1056",
                    "value": "windows",
                    "id": "101056"
                }

所以我有这样的脚本:

import requests, json

tick = """jira: pc-1002,pc-1003,pc-1005
env"""
ticks = tick.replace(' ','').split(':')[1].split('\n')[0].split(',')
print(ticks)

for i in ticks:
    url = "https://jira.com/login/rest/api/latest/issue/" + str(i)
    print(url)

    response = requests.request("GET", url, verify=False)
    response = json.loads(response.text)
    resp = response['fields']['customfield_1925']['value']   
    print(resp)

所以它会打印所有的值,如下所示: 输出:

windows1 窗户2 窗户1

我希望输出值是唯一的,因为它最终可能会有重复。

我想要如下输出

['windows1', 'windows2']

【问题讨论】:

  • itertools.groupby 可能是一个很好的匹配。文档中甚至还有一个获取唯一键的示例。

标签: python python-2.7 jython


【解决方案1】:

只需将每个响应添加到响应列表中,然后使用 Python 方便的“in”运算符来检查每个响应是否已经在列表中。类似的东西:

    allResponses = []
    for i in ticks:
        url = "https://jira.com/login/rest/api/latest/issue/" + str(i)
        print(url)

        response = requests.request("GET", url, verify=False)
        response = json.loads(response.text)
        resp = response['fields']['customfield_1925']['value']
        if resp not in allResponses:   
            print(resp)
            allResponses.append(resp)

【讨论】:

  • 这很好用,但是 resp 值有像 [u'test', u'test2'] 这样的 unicode 字符,如何删除那些 u'?
  • 如果总是只有一个 'u' 开头,你可以使用 Python 字符串切片将第一个字符剪掉。我认为将 "resp = response['fields']['customfield_1925']['value']" 更改为 "resp = response['fields']['customfield_1925']['value'][1:] 应该可以它。
  • 它将第一个字母像 [u'test', u'test2'] 分割成 [u'est', u'est2']
  • 它的 resp 值基本上是 [u'test', u'test2 - tests2 - test3'],所以它将它添加为 [u'test', u'test2 \u2013 tests2 \u2013 test3'] , \u2013 导致问题。
  • 字符串管理您的唯一条目是另一个问题,对不起,我无法做到这一点 - 您能否将我的回答标记为解决您在这篇文章中的原始问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 2019-12-07
  • 2017-06-05
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多