擅长:python、mysql、java
<p>我不知道你是否有强迫性,但正则表达式更适合这种问题。最好的一点是,它非常健壮,但非常灵活->;如果您希望有更多的格式(可能是2004年1月31日这样的美国风格),您可以轻松地进行修改。五行代码而不是原来的15;)</p>
<p>代码如下:</p>
<pre><code>import re
reg_date = "(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag)*\s*(\d{1,2})\.\s+(\w{3,12})\s(\d{2,4})"
def extract_date(string):
results = re.search(reg_date, string)
if results:
date = results.groups()
return date[1], date[2], date[3]
</code></pre>
<p>要使用它,只需写一行:</p>
<pre><code>day,month,year = extract_date("Dienstag 31. Dezember 2013 and ")
print day,month,year
</code></pre>
<p>或者用第二种格式做另一个实验</p>
<pre><code>day,month,year = extract_date("31. May 2013 ")
print day,month,year
</code></pre>
<p><img src="https://i.stack.imgur.com/7oo1R.png" alt="enter image description here"/></p>
<p>简单,优雅,可重复使用。你知道吗</p>