Python 如何使用If-then语句读取csv值?

Python 如何使用If-then语句读取csv值?,python,csv,Python,Csv,我想读取“Rel volume”的csv文件值,如果该值为2.5或更大,则打印股票代码和值。但是,我不能这样做,因为int值不能与'str'值进行比较。如何比较这些值,然后将各个股票代码中csv文件的值放入新列表? 这是我的密码: import csv import urllib.request from bs4 import BeautifulSoup write_header = True twiturl = "https://twitter.com/ACInvestorBlog" t

我想读取“Rel volume”的csv文件值,如果该值为2.5或更大,则打印股票代码和值。但是,我不能这样做,因为int值不能与'str'值进行比较。如何比较这些值,然后将各个股票代码中csv文件的值放入新列表? 这是我的密码:

import csv
import urllib.request
from bs4 import BeautifulSoup


write_header = True

twiturl = "https://twitter.com/ACInvestorBlog"
twitpage = urllib.request.urlopen(twiturl)
soup = BeautifulSoup(twitpage,"html.parser")

print(soup.title.text)

tweets = [i.text for i in soup.select('a.twitter-cashtag.pretty-link.js-nav b')]
""""
print(tweets)
"""
URL_BASE = "https://finviz.com/quote.ashx?t="

with open('_Stocks.csv', 'w', newline='') as file:
    writer = csv.writer(file)

    # note the change
    for tckr in tweets:
        URL = URL_BASE + tckr
        try:
            fpage = urllib.request.urlopen(URL)
            fsoup = BeautifulSoup(fpage, 'html.parser')

            if write_header:
                # note the change
                writer.writerow(['tckr'] + list(map(lambda e: e.text, fsoup.find_all('td', {'class': 'snapshot-td2-cp'}))))
                write_header = False

            # note the change
            writer.writerow([tckr] + list(map(lambda e: e.text, fsoup.find_all('td', {'class': 'snapshot-td2'}))))
        except urllib.request.HTTPError:
            print("{} - not found".format(URL))

with open('_Stocks.csv') as csv_file:
    csv_reader = csv.DictReader(csv_file)

    for line in csv_reader:
        if line['Rel Volume'] > 2.5:
            print(line['tckr'], line['Rel Volume'])
使用csv.DictReader读取数据时,值都是字符串。因此,在使用Rel Volume之前,您需要将其转换为浮点:

with open('_Stocks.csv', newline='') as csv_file:
    csv_reader = csv.DictReader(csv_file)

    for line in csv_reader:
        line['Rel Volume'] = float(line['Rel Volume'])

        if line['Rel Volume'] > 2.5:
            print(line['tckr'], line['Rel Volume'])

您是否尝试将值转换为数字?请注意,在打开之前的所有内容。。。作为csv_文件:行与问题无关,可以安全地删除。您可以仅用最后6行重现您的问题。它应该适用于floatline[…]>2.5。还可以使用pandas加载pandas来加载csv文件。这比在线路上循环要优雅得多。谢谢你的帮助@dennis ec