Python2.7和Python3.4编码和分割函数不工作

2024-10-04 03:17:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我打赌这是个愚蠢的问题,我来了。在

我在做Fedora21。在

从数据库中,我收到字符串: 16 de enero de 1979 – 25 de agosto de 2001 我要用中间的'-'来分割字符串。 所以我要做的是:

text = '16 de enero de 1979 – 25 de agosto de 2001'

Python 2.7.8:

^{pr2}$

Python3.4版。在

text
# returns: '16 de enero de 1979 – 25 de agosto de 2001'
text.split('-')
#returns: ['16 de enero de 1979 – 25 de agosto de 2001']

我知道python3.x的默认编码是utf-8,python2.x的默认编码是ascii,但我从来没有完全理解清楚,我们到底该如何处理这些编码的事情。 当我将这些信息存储在数据库中时,我使用charset='utf-8'来确保我不会遇到这种麻烦。而且知道我在检索信息,Python处理编码的能力不强。或者。。。我不能很好地处理Python(很可能)。 提前谢谢。在


Tags: 字符串text信息数据库编码depython3utf
3条回答
  1. 确保文本是Unicode字符串:在顶部添加from __future__ import unicode_literals,或者调用:text = utf8bytes.decode('utf-8')
  2. 使用正确的分隔符u'\N{EN DASH}'
>>> u'16 de enero de 1979 – 25 de agosto de 2001'.split(u'\N{EN DASH}')
[u'16 de enero de 1979 ', u' 25 de agosto de 2001']

它不是正常的连字符。它是一个unicode字符\u2013。我试过这样的方法:

In [70]: text.split('\u2013')
Out[70]: [u'16 de enero de 1979 \u2013 25 de agosto de 2001']

In [71]: text.split(u'-')
Out[71]: [u'16 de enero de 1979 \u2013 25 de agosto de 2001']

In [72]: text.split(u'–')       #HERE i copied the character from string
Out[72]: [u'16 de enero de 1979 ', u' 25 de agosto de 2001']

在您的例子中,它不工作,因为它找不到-(连字符)。在

错误是你在错误的字符上分开。在

原始字符串中的字符是长破折号“-”,而split参数中的字符是短破折号“-”。在

相关问题 更多 >