私はpython 2.7を使用しており、コードにこれがあります:regexp = re.compile('ttp_ws_sm_(\d)_')
これは、サンプルのようにループ内でさまざまな文字を検索します (3 番目のアンダースコアの後)。次のような文字列についても同じことを行う必要があります'ttpv1_(\d+)_'
私が試した2つのことは次のとおりです。
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()
名前を使用せず、両方の文字列のいずれかをコンパイル ステートメントに入れると、1 セットの合計のみが返されます。「001」、「045」の両方のセットを組み合わせて印刷する必要があります