亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果包含列表中的字符串,則跳過 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 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號