在包含2个列表的字符串列表中搜索子字符串匹配

2024-04-25 18:13:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表,我正在努力工作。第一个是一个名称列表,它对应于我要在其中查找匹配项的名称,第二个列表是该名称列表的状态。我希望能够查看第一个列表,并在字符串中查找匹配项,如果存在匹配项,则将第一个列表中的元素抓取到新列表中,同时也抓取第二个列表中的相应元素以获得名称和状态对。我已经尝试了几种方法,但都没有找到正确的方法,并且已经查看了董事会上的各种列表理解问题,也没有找到适合我的案例的解决方案。你知道吗

例如,在下面的代码中,我想获取“abc-1”和“abc-2”条目以及这两个条目的“ok”和“ok”状态,并将它们输出为finalNameList和finalStatusList。你知道吗

如果有人能提供帮助,我将不胜感激。你知道吗

在我目前的实现中,我得到了一个 类型错误:“需要字符串或缓冲区”

import re
import os
import sys
import getopt
import pdb

nameList = ['abc-1', 'abc-2', 'def-1', 'def-2']
statusList = ['ok', 'ok', 'bad', 'bad']
scac = 'abc'


def scacFilter (scac, nameList, statusList):
    if not scac:
        newNameList = nameList
        newStatusList = statusList
    else:
        for i in nameList:
            if re.search(scac, i):
                name = nameList[i]
                status = statusList[i]
                newNameList.append(name)
                newStatusList.append(status)
            else:
                print 'no scac match'
    return newNameList, newStatusList


finalNameList, finalStatusList = scacFilter(scac, nameList, statusList)

Tags: 方法字符串import名称元素列表状态def
2条回答

import os nameList = ['abc-1', 'abc-2', 'def-1', 'def-2'] statusList = ['ok', 'ok', 'bad', 'bad'] scac = 'abc' def scacFilter (scac, nameList, statusList): resultList = [] resultVal = [] for val in nameList: if not val.find(scac): indexVal = nameList.index(val) resultList.append(nameList[indexVal]) resultVal.append(statusList[indexVal]) return resultList, resultVal finalNameList, finalStatusList = scacFilter(scac, nameList, statusList) print finalNameList print finalStatusList

i是一个整数。因此,正则表达式正在以整数值形式搜索scac中定义的字符串。i、 它在1中搜索'abc'。你知道吗

创建for循环的更好方法是:

for i in nameList:

这样,i实际上是nameList(即'abc-1''abc-2'等…)中的字符串,而不是整数,因此您将在要执行的字符串上执行regex!你知道吗

相关问题 更多 >

    热门问题