如果匹配两个条件,则从CSV返回行

时间:2017-11-02 20:23:38

标签: python 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%']

1 个答案:

答案 0 :(得分:3)

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)。