繁体   English   中英

将存储在变量中的多个字符串转换为 python 中的单个列表

[英]Convert multiple string stored in a variable into a single list in python

我希望每个人都做得很好。 我需要一点帮助,我需要从变量中获取所有字符串并需要存储到 python 中的单个列表中。 例如 - 我有 json 文件,我从中获取 id,并且当我运行 print(id) 时,所有 id 都存储到一个名为 id 的变量中,如下所示

17298626-991c-e490-bae6-47079c6e2202
17298496-19bd-2f89-7b5f-881921abc632
17298698-3e17-7a9b-b337-aacfd9483b1b
172986ac-d91d-c4ea-2e50-d53700480dd0
172986d0-18aa-6f51-9c62-6cb087ad31e5
172986f4-80f0-5c21-3aee-12f22a5f4322
17298712-a4ac-7b36-08e9-8512fa8322dd
17298747-8cc6-d9d0-8d05-50adf228c029
1729875c-050f-9a99-4850-bb0e6ad35fb0
1729875f-0d50-dc94-5515-b4891c40d81c
17298761-c26b-3ce5-e77e-db412c38a5b4
172987c8-2b5d-0d94-c365-e8407b0a8860
1729881a-e583-2b54-3a52-d092020d9c1d
1729881c-64a2-67cf-d561-6e5e38ed14cb
172987ec-7a20-7eb6-3ebe-a9fb621bb566
17298813-7ac4-258b-d6f9-aaf43f9147b1
17298813-f1ef-d28a-0817-5f3b86c3cf23
17298828-b62b-9ee6-248b-521b0663226e
17298825-7449-2fcb-378e-13671cb4688a

我希望将所有这些值存储到一个列表中。 有人可以帮我解决这个问题。

下面是我正在使用的代码:

import json
with open('requests.json') as f:
    data = json.load(f)
print(type(data))
for i in data:
     if 'traceId' in i:
         id = i['traceId']
         newid = id.split()
         #print(type(newid))
         print(newid)

下面是我的 json 文件看起来像:

[
   {
      "id": "376287298-hjd8-jfjb-khkf-6479280283e9",
      "submittedTime": 1591692502558,
      "traceId": "17298626-991c-e490-bae6-47079c6e2202",
      "userName": "ABC",
      "onlyChanged": true,
      "description": "Not Required",
      "startTime": 1591694487929,
      "result": "NONE",
      "state": "EXECUTING",
      "paused": false,
      "application": {
         "id": "16b22a09-a840-f4d9-f42a-64fd73fece57",
         "name": "XYZ"
      },
      "applicationProcess": {
         "id": "dihihdosfj9279278yrie8ue",
         "name": "Deploy",
         "version": 12
      },
      "environment": {
         "id": "fkjdshkjdshglkjdshgldshldsh03r937837",
         "name": "DEV"
      },
      "snapshot": {
         "id": "djnglkfdglki98478yhgjh48yr844h",
         "name": "DEV_snapshot"
      },

   },
   {
      "id": "17298495-f060-3e9d-7097-1f86d5160789",
      "submittedTime": 1591692844597,
      "traceId": "17298496-19bd-2f89-7b5f-881921abc632",
      "userName": "UYT,
      "onlyChanged": true,
      "startTime": 1591692845543,
      "result": "NONE",
      "state": "EXECUTING",
      "paused": false,
      "application": {
         "id": "osfodsho883793hgjbv98r3098w",
         "name": "QA"
      },
      "applicationProcess": {
         "id": "owjfoew028r2uoieroiehojehfoef",
         "name": "EDC",
         "version": 5
      },
      "environment": {
         "id": "16cf69c5-4194-e557-707d-0663afdbceba",
         "name": "DTESTU"
      },

   }
 ]

从我试图获取traceId的地方。

您可以使用如下简单的split方法:

ids = '''17298626-991c-e490-bae6-47079c6e2202 17298496-19bd-2f89-7b5f-881921abc632 17298698-3e17-7a9b-b337-aacfd9483b1b 172986ac-d91d-c4ea-2e50-d53700480dd0 172986d0-18aa-6f51-9c62-6cb087ad31e5 172986f4-80f0-5c21-3aee-12f22a5f4322 17298712-a4ac-7b36-08e9-8512fa8322dd 17298747-8cc6-d9d0-8d05-50adf228c029 1729875c-050f-9a99-4850-bb0e6ad35fb0 1729875f-0d50-dc94-5515-b4891c40d81c 17298761-c26b-3ce5-e77e-db412c38a5b4 172987c8-2b5d-0d94-c365-e8407b0a8860 1729881a-e583-2b54-3a52-d092020d9c1d 1729881c-64a2-67cf-d561-6e5e38ed14cb 172987ec-7a20-7eb6-3ebe-a9fb621bb566 17298813-7ac4-258b-d6f9-aaf43f9147b1 17298813-f1ef-d28a-0817-5f3b86c3cf23 17298828-b62b-9ee6-248b-521b0663226e 17298825-7449-2fcb-378e-13671cb4688a'''

l = ids.split(" ")
print(l)

这将给出以下结果,我假设所需的分隔符是简单的空间你可以适当调整:

['17298626-991c-e490-bae6-47079c6e2202', '17298496-19bd-2f89-7b5f-881921abc632', '17298698-3e17-7a9b-b337-aacfd9483b1b', '172986ac-d91d-c4ea-2e50-d53700480dd0', '172986d0-18aa-6f51-9c62-6cb087ad31e5', '172986f4-80f0-5c21-3aee-12f22a5f4322', '17298712-a4ac-7b36-08e9-8512fa8322dd', '17298747-8cc6-d9d0-8d05-50adf228c029', '1729875c-050f-9a99-4850-bb0e6ad35fb0', '1729875f-0d50-dc94-5515-b4891c40d81c', '17298761-c26b-3ce5-e77e-db412c38a5b4', '172987c8-2b5d-0d94-c365-e8407b0a8860', '1729881a-e583-2b54-3a52-d092020d9c1d', '1729881c-64a2-67cf-d561-6e5e38ed14cb', '172987ec-7a20-7eb6-3ebe-a9fb621bb566', '17298813-7ac4-258b-d6f9-aaf43f9147b1', '17298813-f1ef-d28a-0817-5f3b86c3cf23', '17298828-b62b-9ee6-248b-521b0663226e', '17298825-7449-2fcb-378e-13671cb4688a']

编辑

您会得到列表列表,因为每次迭代您只读取 1 个id ,所以您需要做的是启动一个空列表和 append 每个 id 以下列方式:

l = []
for i in data
    if 'traceId' in i:
         id = i['traceId']
         l.append(id)

您可以将 append 的ids变量添加到列表中,例如,

#list declaration
l1=[]

#this must be in your loop
l1.append(ids)

我假设您将id作为str类型值。 使用id.split()将在一个 Python 列表中返回所有 id 的列表,因为在您的示例中每个 id 都用空格分隔。

id = """17298626-991c-e490-bae6-47079c6e2202 17298496-19bd-2f89-7b5f-881921abc632
        17298698-3e17-7a9b-b337-aacfd9483b1b 172986ac-d91d-c4ea-2e50-d53700480dd0
        172986d0-18aa-6f51-9c62-6cb087ad31e5 172986f4-80f0-5c21-3aee-12f22a5f4322
        17298712-a4ac-7b36-08e9-8512fa8322dd 17298747-8cc6-d9d0-8d05-50adf228c029
        1729875c-050f-9a99-4850-bb0e6ad35fb0 1729875f-0d50-dc94-5515-b4891c40d81c
        17298761-c26b-3ce5-e77e-db412c38a5b4 172987c8-2b5d-0d94-c365-e8407b0a8860
        1729881a-e583-2b54-3a52-d092020d9c1d 1729881c-64a2-67cf-d561-6e5e38ed14cb
        172987ec-7a20-7eb6-3ebe-a9fb621bb566 17298813-7ac4-258b-d6f9-aaf43f9147b1
        17298813-f1ef-d28a-0817-5f3b86c3cf23 17298828-b62b-9ee6-248b-521b0663226e
        17298825-7449-2fcb-378e-13671cb4688a"""
id_list = id.split()
print(id_list)

Output:

['17298626-991c-e490-bae6-47079c6e2202', '17298496-19bd-2f89-7b5f-881921abc632',
'17298698-3e17-7a9b-b337-aacfd9483b1b', '172986ac-d91d-c4ea-2e50-d53700480dd0',
'172986d0-18aa-6f51-9c62-6cb087ad31e5', '172986f4-80f0-5c21-3aee-12f22a5f4322',
'17298712-a4ac-7b36-08e9-8512fa8322dd', '17298747-8cc6-d9d0-8d05-50adf228c029',
'1729875c-050f-9a99-4850-bb0e6ad35fb0', '1729875f-0d50-dc94-5515-b4891c40d81c',
'17298761-c26b-3ce5-e77e-db412c38a5b4', '172987c8-2b5d-0d94-c365-e8407b0a8860',
'1729881a-e583-2b54-3a52-d092020d9c1d', '1729881c-64a2-67cf-d561-6e5e38ed14cb',
'172987ec-7a20-7eb6-3ebe-a9fb621bb566', '17298813-7ac4-258b-d6f9-aaf43f9147b1',
'17298813-f1ef-d28a-0817-5f3b86c3cf23', '17298828-b62b-9ee6-248b-521b0663226e',
'17298825-7449-2fcb-378e-13671cb4688a']

split()默认使用空格作为分隔符。 如果需要,您可以使用sep参数来使用任何其他分隔符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM