为了账号安全,请及时绑定邮箱和手机立即绑定

如果包含列表中的字符串,则跳过 CSV 中的行

如果包含列表中的字符串,则跳过 CSV 中的行

慕村9548890 2022-01-05 12:13:40
我有一个大约 500 个字符串的列表,我想对照包含 25,000 行的 CSV 文件检查这些字符串。我目前所拥有的似乎陷入循环。如果该行包含我的字符串列表中的任何字符串,我基本上想跳过该行,然后提取其他数据。stringList = [] #strings look like "AAA", "AAB", "AAC", etc.with open('BadStrings.csv', 'r')as csvfile:    filereader = csv.reader(csvfile, delimiter=',')    for row in filereader:        stringToExclude = row[0]        stringList.append(stringToExclude)with open('OtherData.csv', 'r')as csvfile:    filereader = csv.reader(csvfile, delimiter=',')    next(filereader, None) #Skip header row    for row in filereader:        for s in stringList:            if s not in row:                data1 = row[1]编辑:不是无限循环,但循环时间太长。
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

根据 Niels 的说法,我会更改 2 循环并遍历行本身并检查当前行条目是否在“坏”列表中:


for row in filereader:

    for s in row:

       if s not in stringlist:

           data1 = row[0]

而且我也不知道您想对 data1 做什么,但是当项目不在 stringList 中时,您总是会更改对象引用。您可以使用列表将项目添加到列表中data1.append(item)


查看完整回答
反对 回复 2022-01-05
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

你可以尝试这样的事情。


stringList = [] #strings look like "AAA", "AAB", "AAC", etc.


with open('BadStrings.csv', 'r')as csvfile:

    filereader = csv.reader(csvfile, delimiter=',')

    for row in filereader:

        stringToExclude = row[0]

        stringList.append(stringToExclude)


data1 = [] # Right now you are overwriting your data1 every time. I don't know what you want to do with it, but you could for exmaple add all row[1] to a list data1

with open('OtherData.csv', 'r')as csvfile:

    filereader = csv.reader(csvfile, delimiter=',')

    next(filereader, None) #Skip header row

    for row in filereader:

        found_s = False

        for s in stringList:

            if s in row:

                found_s = True

                break

        if not found_s:

            data1.append(row[1]) # Add row[1] to the list is no element of stringList is found in row. 

仍然可能不是一个巨大的性能改进,但至少 for 循环for s in stringList:现在会在找到 s 后停止。


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信