首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unicode搜索不工作

Unicode搜索不工作
EN

Stack Overflow用户
提问于 2015-10-09 06:07:50
回答 4查看 264关注 0票数 1

考虑一下这个。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
data = "cdbsb \xe2\x80\xa6 abc"
print data 
#prints cdbsb … abc
              ^
print re.findall(ur"[\u2026]", data )

为什么re找不到这个unicode字符?我已经查过了

代码语言:javascript
复制
\xe2\x80\xa6 === … === U+2026
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-09 08:37:53

如果您浏览了纳赫特提供的链接

用Python2.7解决Unicode问题

您可以看到原始字符串在bytes中,我们正在搜索unicode。所以这根本不应该起作用。

encode():从Unicode→字节中获取 decode():从字节中获取→Unicode

接下来,我们可以用两种方法来解决这个问题。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
data = "cdbsb \xe2\x80\xa6 abc".decode("utf-8")  #convert to unicode
print data
print re.findall(ur"[\u2026]", data )
print re.findall(ur"[\u2026]", data )[0].encode("utf-8")  #compare with unicode byte string and then reconvert to bytes for print

data1 = "cdbsb \xe2\x80\xa6 abc"  #let it remain bytes
print data1
print re.findall(r"\xe2\x80\xa6", data1 )[0] #search for bytes
票数 1
EN

Stack Overflow用户

发布于 2015-10-09 06:27:10

我猜问题是因为data是一个字节字符串。您可能将控制台编码为utf-8,因此在打印字符串时,控制台会将字符串转换为utf-8,然后显示它(您可以在sys.stdout.encoding中查看这个字符串)。因此,您得到的字符-

但最有可能的是,re不会为您进行这种解码。

如果将data转换为utf-8编码,则在使用re.findall时将获得所需的结果。例子-

代码语言:javascript
复制
>>> data = "cdbsb \xe2\x80\xa6 abc"
>>> print re.findall(ur"[\u2026]", data.decode('utf-8') )
[u'\u2026']
票数 1
EN

Stack Overflow用户

发布于 2015-10-09 08:03:14

datastr类型,包含具有十六进制值的字符。但是搜索词是unicode类型的。打印函数将默认值转换为sys.stdout.encoding。当我试图按原样打印data时,输出与data.decode('utf-8')不同。我正在使用Python2.7

代码语言:javascript
复制
data = "cdbsb \xe2\x80\xa6 abc"
search = ur"[\u2026]"

print sys.stdout.encoding
## windows-1254

print data, type(data)
## cdbsb … abc <type 'str'>

print data.decode(sys.stdout.encoding)
## cdbsb … abc

print data.decode('utf-8')
## cdbsb … abc

print search, type(search)
## […] <type 'unicode'>

print re.findall(search, data.decode('utf-8'))
## [u'\u2026']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33031009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档