如果符合两个条件,则从 CSV 返回行



以下脚本适用于REPORT_TYPE是 SOD 的地方,但如果我希望它在我的 CSV 中也具有名为 DATE 的字段的条件等于 10-24-2017 怎么办?DATE 字段的格式还包括小时、分钟、秒,但我想忽略它们(例如 10-24-2017T23:59:00)。

path = "C:/python-testing/*.csv"
for fname in glob.glob(path):
print(fname)
with open(fname, 'rb') as f:
    reader = csv.DictReader(f)
    rows = [row for row in reader if row['REPORT_TYPE'] == 'SOD  ']
for row in rows:
    print row

我尝试了以下内容,但它不喜欢那里的 AND,并给了我无效的语法错误。

rows = [row for row in reader if row['REPORT_TYPE'] == 'SOD  ' AND ['DATE'] like '10-24-2017%']

Python 没有 LIKE 运算符(与 SQL 不同)。

因此,您可以使用 startswith 方法:

rows = [
  row 
  for row in reader 
  if row['REPORT_TYPE'] == 'SOD  ' 
     and row['DATE'].startswith('10-24-2017')
]

另外,使用小写and,因为Python的标识符/关键字区分大小写(再次,UNLiKE SqL)。

最新更新