- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我用 python 解析 html 并且有日期字符串:[ 24-Янв-17 07:24 ]
。 “Янв”是“一月”。我想将它转换成日期时间对象。
# Some beautifulsoup parsing
timeData = data.find('div', {'id' : 'time'}).text
import locale
locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')
result = datetime.datetime.strptime(timeData, u'[ %d-%b-%y %H:%M ]')
错误是:
ValueError: time data '[ 24-\xd0\xaf\xd0\xbd\xd0\xb2-17 07:24 ]' does not match format '[ %d-%b-%y %H:%M ]'
type(timeData)
返回 unicode。从 utf-8
编码 timeData
返回 UnicodeEncodeError
。怎么了?
chardet 返回 {'confidence': 0.87625, 'encoding': 'utf-8'}
当我写的时候:datetime.datetime.strptime(timeData.encode('utf- 8'), ...)
返回错误如上。
原始页面有 window-1251
编码。
print type(timeData)
print timeData
timeData = timeData.encode('cp1251')
print type(timeData)
print timeData
返回
<type 'unicode'>
[ 24-Янв-17 07:24 ]
<type 'str'>
[ 24-???-17 07:24 ]
最佳答案
明白了! янв
在 CPython 2.7.12 中必须是小写。代码(适用于 cygwin 上的 CPy 2.7.12 和 CPy 3.4.5):
# 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)
结果:
2017-01-24 07:24:00
如果我使用大写的 Янв
,它在 Py 3 中有效,但在 Py 2 中它给出
ValueError: time data '[ 24-\xd0\xaf\xd0\xbd\xd0\xb2-17 07:24 ]' does not match format '[ %d-%b-%y %H:%M ]'
一般在 Python 2 中处理这个问题,小写优先(参见 this answer ):
# 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)
结果:
[ 24-янв-17 07:24 ]
2017-01-24 07:24:00
我无法用你的 beautifulsoup 代码测试它,但是,一般来说,获取 Unicode数据,然后使用上面的。
或者,如果可能的话,切换到 Python 3 :)。
那我是怎么想出来的呢?我在 CPython 源代码中寻找 strptime
( search ) 的代码。我找到了方便的 _strptime
模块,包含 class LocaleTime
.我还找到了一个 mention LocaleTime
。要打印可用的月份名称,请执行此操作(添加到上面“快速修复”下代码的末尾):
from _strptime import LocaleTime
lt = LocaleTime()
print(lt.a_month)
a_month
具有每个 the source 的缩写月份名称.
在 Py3 上,产生:
['', 'янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек']
^ lowercase!
在 Py2 上,产生:
['', '\xd1\x8f\xd0\xbd\xd0\xb2',
还有更多。请注意,第一个字符是 \xd1\x8f
,在您的错误消息中,\xd0\xaf
不匹配。
关于python - 如何在 strptime 中使用俄语日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839678/
我必须设计一个俄语版的网站。我从翻译那里得到文本。我把它复制到 Dreamweaver 的代码中,但它不起作用。 我有平常的脑袋: 我该怎么办? 最佳答案 您应该将文件的编码更改为 UTF-8。您可
我正在使用 google-api-spelling-java jar 库。而且我需要使用更多的语言来使用,其中之一就是俄语。我在哪里可以获得相同的库但具有更多语言? 最佳答案 您可以在此处下载源代码并
我有一张表,用于存储一些文本标签。最初它是使用 latin_swedish_ci(默认)排序规则构建的。 现在我需要支持其他语言,例如俄语。我有两个使用这些标签的页面。一个显示它们很好,尽管该表仍然使
尝试匹配字符串“Манихина Галина Владимировна”和其他相同格式的字符串。也就是三个字的专有名词。我是正则表达式的新手,不确定我的陈述有什么问题。 import java.ut
我应该使用哪种排序规则将阿拉伯语、俄语、英语和德语字符保存到数据库中? 我的列设置是nvarchar(100) 我目前已将其设置为: SQL_Latin1_General_Cp1256_CI_AS 它
我有一个覆盖了 onKeyDown() 的自定义 View 。当我使用标准的 Android 英语(或意大利语)软键盘时它工作正常,但是当我将设备设置为俄语时,按键事件永远不会到达 onKeyDown
也许有人知道从中检索翻译的最佳方式是什么。是否有用于阅读 Multitran 词典数据库的图书馆?我的目标是一个简单的程序,它将检索给定的俄语单词的英文翻译。 最佳答案 也许你可以使用 StarDic
我尝试使用提要解析器阅读 RSS 提要。 import feedparser url = 'http://example.com/news.xml' d=feedparser.parse(url) f
我正在尝试通过 setlocale 使用俄语: setlocale(LC_TIME,"ru_RUS.utf8"); echo strftime("%A, %B %d", time()); 输出是:8
我在数据库中有一个具有俄罗斯值(value)观的项目。我需要做的就是附和他们,但事实证明这比预期的要困难。所有俄语字符都只是作为问号打印。 IE: ??? ? ????????对于我尝试过的每种编码,
我已经花了几天时间,我做错了什么?我就是不能把俄语字符弄出来。尝试了上面的所有代码 - 它没有帮助。下面我用不同的选项引用我的代码。请帮帮我。 库连接如下 dependencies { imp
我正在我的 Android 设备(Motorola Defy,2.1)上调试应用程序,该应用程序从网络获取俄语 HTML 页面,但无法显示它。它显示为 link text 。HTML 页面采用 UTF
过去几个小时我一直对俄语制表符分隔的 txt 文件感到困惑。其外观如下: CODE AD_GROUP KEYWORD MATCH_TYPE 009966 Автостраховка
我需要在基于 Spring 的项目中为俄语和葡萄牙语等语言本地化一组 JSP 页面。 我尝试的是,使用 EL 和 JSTL。但是它们都不支持上述语言。 (显示迷失方向的字符符号) JSP 片段(用于
我对我的英语感到抱歉。我正在尝试使用 PdfPTable(iText 库)创建表。表格显示空列![在此处输入图像描述][1] public class CreatePDF { File file; B
我正在尝试在包含非拉丁字符的 Qt/C++ 软件上加载文件。一个使用俄语文件名的用户报告的问题,我试图用下面的代码快速修复它。 示例文件名是(我不会读或写俄语!):Летний сад.dgr boo
是否可以在 javascript 的正则表达式中使用俄语字符? 也许使用\p{Cyrillic}? 如果是,请提供一个基本的用法示例。 例子: var str1 = "абв прв фву"; va
2016 年 31 日 15:10 декабря不是英语。 декабря = 十二月 DateTime.Parse("31/December/2016").ToString("yyyymmdd")
当我将数据添加到工作簿时,需要将公式从较早的单元格复制到新单元格。 我使用以下公式来计算我的增长率: =WENN(ODER(K9="";L9="");"";WENNFEHLER((L9-K9)/K9;
如题,我不知道如何在C中解析包含字母字符和来自其他语言的特殊字符的字符串。谁能帮助我如何在C中区分它们?。我是否需要安装一些可选组件来帮助C接受字符?(我在linux环境中)。非常感谢您的回复。 最佳
我是一名优秀的程序员,十分优秀!