擅长:python、mysql、java
<p>我想你真正想要的是这样的东西:</p>
<pre><code>regions_to_files = defaultdict(list)
for x in filenames:
matches = re.match(r'(?P<region>.*)_(?P<year>200[0-9]|201[0-7])_test.csv', x)
region = matches.group('region')
regions_to_files[region].append(x)
</code></pre>
<p>现在,所有与<code>mato_grosso</code>相关的文件都将在<code>regions_to_files['mato_grosso']</code>可用,而所有与<code>mato_grosso_do_sul</code>相关的文件都将在<code>regions_to_files['mato_grosso_do_sul']</code>可用</p>
<hr/>
<p>匹配第一个文件名:</p>
<pre><code># mato_grosso_2000_test.csv
re.match(r'mato_grosso_20(0[0-9]|1[0-7])_test.csv', filename)
</code></pre>
<p>匹配第二个文件名,但不匹配第一个文件名:</p>
<pre><code># mato_grosso_do_sul_2000_test.csv
re.match(r'mato_grosso_do_sul_20(0[0-9]|1[0-7])_test.csv', filename)
</code></pre>
<p>正则表达式<code>(0[0-9]|1[0-7])</code>将匹配00,01。你17岁。你知道吗</p>