我正在使用 python 2.7 并在我的代码中有一个:regexp = re.compile('ttp_ws_sm_(\d)_')
这会在我的循环中搜索与我的示例中不同的字符(在第三个下划线之后)。我也需要对像这样的字符串做同样的事情'ttpv1_(\d+)_'
我尝试过的两件事是:
regexp = re.compile('ttp_ws_sm_(\d)_' or 'ttpv1_(\d+)_')
和
name = ('ttp_ws_sm_(\d+)_' or 'ttpv1_(\d+)_')
regexp = re.compile(name)
以下是一些示例数据:
sample filheader 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_045_blank, , , , , , , , , , , ,55
date,ttp_ws_sm_057_blank, , , , , , , , , , , ,98
date,ttpv1_001_, , , , , , , , , , , ,67
date,ttpv1_001_01, , , , , , , , , , , ,67*e is
完整的代码是:
from collections import defaultdict
import sys
import csv
import re
import os
#variables
output_path = '\\\\Isfs\\data$\\GIS Carto\TTP_Draw_Count'
source = '\\\\Isfs\\data$\\GIS Carto\TTP_Draw_Count'
name = ('ttp_ws_sm_(\d+)_' or 'ttpv1_(\d+)_')
def main():
result = defaultdict(int)
regexp = re.compile(name)
with open(os.path.join(source, 'TTP_13_08.csv'), 'r') as f:
rows = csv.reader(f)
for row in rows:
match = regexp.search(row[1])
if match:
result[match.group(1)] += int(row[13])
for key, value in result.items():
print ("Club %s %s" % (key, value))
if __name__ == '__main__':
main()
如果我不使用 name 而只是将两个字符串中的任何一个都放在编译语句中,我只会返回一组总数。我需要将两组组合并打印为“001”、“045”