1

我是 python 新手,我有一个 csv 文件,我需要根据第三个“_”之后的字符选择某些行。

这是 csv 文件中的示例:

header row
date,ttp_ws_sm_001_01, , , , , , , , , , , ,117
date,ttp_ws_sm_001_blank, , , , , , , , , , , ,31
date,ttp_ws_sm_045_01, , , , , , , , , , , ,145
date,ttp_ws_sm_057_blank, , , , , , , , , , , ,98
date,ttpv1_001_, , , , , , , , , , , ,67
date,ttpv1_001_01, , , , , , , , , , , ,67
...

我正在尝试从它 = 001 和行(13)的行 [1] 中进行选择。我似乎无法弄清楚如何让这个选择起作用。我有这个代码:

import csv
import sys

source = '\\\\filepath' #the folder i need to pull from
with open(source + '\TTP_13_08.csv') as f:
    rows = csv.reader(f)

    for row in rows:

       print (row[1], row[13])

这将打印整个 csv 文件的两列。从这个 csv 文件中,我只需要包含 001 的四行。

4

2 回答 2

4
>>> with open(...) as f:
...     rows = csv.reader(f)
...     for row in rows:
...         t = row[1].split('_')
...         if len(t) >= 4 and t[3] == '001':
...             print (row[1], row[13])
... 
('ttp_ws_sm_001_01', '117')
('ttp_ws_sm_001_blank', '31')
于 2013-09-18T19:17:19.440 回答
2

Check if 001 is in row[1]:

for row in rows:
    if "001" in row[1]:
        print (row[1], row[13])

for your example data, it prints:

('ttp_ws_sm_001_01', '117')
('ttp_ws_sm_001_blank', '31')
('ttpv1_001_', '67')
('ttpv1_001_01', '67')
于 2013-09-18T19:12:44.543 回答