<h2>快速修复</h2>
<p>明白了!<code>янв</code>在CPython 2.7.12中必须是<em>小写</em>。代码(CPy 2.7.12和CPy 3.4.5中关于cygwin的工作):</p>
<pre><code># coding=utf8
#timeData='[ 24-Янв-17 07:24 ]'
timeData='[ 24-янв-17 07:24 ]' ### lower-case
import datetime
import locale
locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')
result = datetime.datetime.strptime(timeData, u'[ %d-%b-%y %H:%M ]')
print(result)
</code></pre>
<p>结果:</p>
^{2}$
<p>如果我使用大写<code>Янв</code>,它在py3中有效,但是在py2中它给出了</p>
<pre><code>ValueError: time data '[ 24-\xd0\xaf\xd0\xbd\xd0\xb2-17 07:24 ]' does not match format '[ %d-%b-%y %H:%M ]'
</code></pre>
<h2>一般情况</h2>
<p>要在Python2中处理这个问题,请先使用小写字母(请参见<a href="https://stackoverflow.com/a/9943237/2877364">this answer</a>):</p>
<pre><code># coding=utf8
timeData=u'[ 24-Янв-17 07:24 ]'
# ^ unicode data
import datetime
import locale
locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')
print(timeData.lower()) # works OK
result = datetime.datetime.strptime(
timeData.lower().encode('utf8'), u'[ %d-%b-%y %H:%M ]')
## ^^^^^^^^^^^^^^ back to a string
## ^^^^^^^ lowercase
print(result)
</code></pre>
<p>结果:</p>
<pre><code>[ 24-янв-17 07:24 ]
2017-01-24 07:24:00
</code></pre>
<p>我不能用你的beauthulsoup代码测试它,但是,一般来说,使用Unicode
然后使用上面的数据。在</p>
<p>或者,如果可能的话,切换到python3:)。在</p>
<h2>解释</h2>
<p>我是怎么想出来的?我在CPython源代码中查找<code>strptime</code>(<a href="https://github.com/python/cpython/search?utf8=%E2%9C%93&q=strptime" rel="nofollow noreferrer">search</a>)的代码。我找到了方便的<a href="https://github.com/python/cpython/blob/2.7/Lib/_strptime.py" rel="nofollow noreferrer">^{<cd4>}</a>模块,其中包含<a href="https://github.com/python/cpython/blob/2.7/Lib/_strptime.py#L31" rel="nofollow noreferrer">^{<cd5>}</a>。我还发现了<code>LocaleTime</code>的<a href="http://www.programcreek.com/python/example/15560/_strptime.LocaleTime" rel="nofollow noreferrer">mention</a>。要打印可用的月份名称,请执行以下操作(添加到上述“快速修复”下的代码末尾):</p>
<pre><code>from _strptime import LocaleTime
lt = LocaleTime()
print(lt.a_month)
</code></pre>
<p><code>a_month</code>具有每个<a href="https://github.com/python/cpython/blob/2.7/Lib/_strptime.py#L39" rel="nofollow noreferrer">the source</a>的缩写月份名称。在</p>
<p>在Py3上,可以得出:</p>
<pre><code>['', 'янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек']
^ lowercase!
</code></pre>
<p>在Py2上,结果是:</p>
<pre><code>['', '\xd1\x8f\xd0\xbd\xd0\xb2',
</code></pre>
<p>还有一堆。请注意,第一个字符是<code>\xd1\x8f</code>,在错误消息中,<code>\xd0\xaf</code>不匹配。在</p>