<p>我会尝试一种混合的方法-这里的<code>calendar.month_name</code>是一个常规字典,您可以通过给出对应于月份的整数来获得月份名称,例如<code>1</code>表示<code>January</code>。如果你想要月的简短形式,那么使用<code>calendar.month_abbr</code>而不是<code>calendar.month_name</code>,例如<code>calendar.month_abbr[1]</code>将给出<code>'Jan'</code></p>
<pre><code>from dateutil import parser
import calendar,re
txt = """MLV A 1.4.16.pdf
MLV A 2.7.16.pdf
MLV N Jan 2016"""
for x,date,y in re.findall(r'(MLV\s*\w\s*)(.*?)($|.pdf)',txt):
d=parser.parse(date)
print "'{0}' has month {1}".format(date,calendar.month_name[d.month])
</code></pre>
<p>输出-</p>
<pre><code>'1.4.16' has month January
'2.7.16' has month February
'Jan 2016' has month January
</code></pre>
<p><code>re.findall(r'(MLV\s*\w\s*)(.*?)($|.pdf)',txt)</code>将返回<code>[('MLV A ', '1.4.16', '.pdf'), ('MLV A ', '2.7.16', '.pdf'), ('MLV N ', 'Jan 2016', '')]</code></p>
<p>有关此处使用的正则表达式的详细信息,请参见<kbd><a href="https://regex101.com/r/hG1sI9/1" rel="nofollow">LIVEDEMO</a></kbd></p>
<p><strong>更多细节(年份)-您也可以添加日期,这里我省略了,因为您的数据没有所有日期</strong>-</p>
<pre><code>from dateutil import parser
import re
txt = """MLV A 1.4.16.pdf
MLV A 2.7.16.pdf
MLV N Jan 2016"""
for x,date,y in re.findall(r'(MLV\s*\w\s*)(.*?)($|.pdf)',txt):
d=parser.parse(date)
print "'{0}' == {1} {2}".format(date,d.strftime("%B"),d.strftime("%Y"))
</code></pre>
<p>输出-</p>
<pre><code>'1.4.16' == January 2016
'2.7.16' == February 2016
'Jan 2016' == January 2016
</code></pre>
<p>有关<code>strftime</code>格式的详细信息,请参见<a href="http://strftime.org/" rel="nofollow">here</a></p>