簡體   English   中英

Python檢查csv文件中的值

[英]Python check if value in csv file

我得到了網址列表,例如:

urls_list = [
    "http://yandex.ru",
    "http://google.ru",
    "http://rambler.ru",
    "http://google.ru",
    "http://gmail.ru",
    "http://mail.ru"
]

我需要打開csv文件,檢查文件中列表中的每個值-跳到下一個值,否則(如果值不在列表中)將其添加到列表中。

結果:第一次運行-添加所有行(如果文件為空),第二次運行-不執行任何操作,因為文件中的所有元素已經存在。

編寫的代碼,但是它的工作完全不正確:

import csv


urls_list = [
    "http://yandex.ru",
    "http://google.ru",
    "http://rambler.ru",
    "http://google.ru",
    "http://gmail.ru",
    "http://mail.ru"
]



with open('urls_list.csv', 'r') as fp:
    for row in fp:
        for url in urls_list:
            if url in row:
                print "YEY!"
            with open('urls_list.csv', 'a+') as fp:
                wr = csv.writer(fp, dialect='excel')
                wr.writerow([url])

將文件讀變量-

with open('urls_list.csv', 'r') as fp:
    s = fp.read()

檢查每個列表項是否在文件中,如果沒有保存,請檢查

missing = []
for url in urls_list:
    if url not in s:
        missing.append(url + '\n')

將缺少的網址寫入文件

if missing:
    with open('urls_list.csv', 'a+') as fp:
        fp.writelines(missing)

考慮到您的文件只有一列, csv模塊可能是一個過大的功能。

下面是一個版本,該版本首先從文件中讀取所有行,然后重新打開文件以寫入文件中尚未存在的url:

lines = open('urls_list.csv', 'r').read()

with open('urls_list.csv', 'a+') as fp:
    for url in urls_list:
        if url in lines:
            print "YEY!"
        else:
            fp.write(url+'\n')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM