首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有ascii解码的python爬虫

带有ascii解码的python爬虫
EN

Stack Overflow用户
提问于 2014-12-13 05:30:00
回答 2查看 1K关注 0票数 0

我正在用Python编写维基百科的网页爬虫。我提取页面的语言信息,其中包含中文、日语等语言的多个字符,当我得到我想要的字符串时,将它们打印出来,它们用ascii编码。结果是:

.(‘越南语’,'vi',‘Ti\XE1\xbfng Vi\xe1\xbb\x87t') {’置信度‘:1.0,’编码‘:'ascii'} (’土耳其语‘,'tr',’T\xc3\xbcrk\xc3 3\xa7e‘){’置信度‘:1.0,’编码‘:'ascii'} (’乌克兰人‘,’英国‘,'\xd0\xa3\xd0\xba\xd1\x80\xd0\xb0\xd1\x97\xd0\xbd\xd1\x81\xd1\x8c\xd0\xba\xd0\xb0') {‘置信度’:1.0,‘编码’:'ascii'} (‘中文’,'zh',‘\XE4\xb8\xad\xe6 6\X96\X87’){‘置信度’:1.0,‘编码’:'ascii'}

我的代码:

代码语言:javascript
复制
def getLanguageContent(content):
    mainPattern = re.compile(matchReg)
    mainContentMatch = mainPattern.findall(content)
    return mainContentMatch

arr = getLanguageContent(getContentFromURL(sitePrefix))
print arr
for a in arr:
   a = str(a)
   print a

arr是一个列表,如“简单英语”、“阿拉伯语”、“ar”、“'\xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa8\xd9\x8a\xd8\xa9'),”.

我想知道如何处理这个问题,并经常在正确的decoding.Thanks中打印字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-13 05:44:44

首先,'Ti\xe1\xba\xbfng Vi\xe1\xbb\x87t'不是在ASCII中编码的。很明显是八号。因此,您不能在ASCII中编码'Tiếng Việt',至少在不丢弃信息(例如,'Tieng Viet')的情况下是不可能的。当我在示例中的所有字符串上运行chardet.detect时,我得到了UTF-8,其信任范围从0.7525到0.99不等。

您的问题是,arr是字符串元组的列表,而不是字符串的列表。当您在元组上调用str(a)时,所做的就是对每个元素调用repr,然后用引号、括号和逗号等来包装整个事件。字符串的repr总是在ASCII中,对非ASCII和ASCII-但不可打印的字符使用反斜杠转义.例如,str(('Vietnamese', 'vi', 'Tiếng Việt'))"('Vietnamese', 'vi', 'Ti\\xe1\\xba\\xbfng Vi\\xe1\\xbb\\x87t')"。那不是有用的字符串。

不要试图找出如何使无用的字符串有用,只需使用您已经拥有的有用字符串即可。不要对字符串元组列表或每个字符串元组调用str。只需在每个元组中使用字符串即可。例如:

代码语言:javascript
复制
for language, code, name in arr:
    print name

这将(假设您的控制台可以处理UTF-8)打印出Tiếng Việt。或者,如果您想将其解码为unicode,只需要uname = name.decode('utf-8')。或者,如果您想调用chardet.detect(name),它将验证它是具有0.7525信心的UTF-8。诸若此类。

票数 1
EN

Stack Overflow用户

发布于 2014-12-13 05:43:13

这听起来很奇怪。Ascii不包含中文或日文characters.They,可能是用utf8编码的。您想要的是str(a).decode("utf-8")解码在utf-8中编码的字符串。如果您尝试使用str(a).decode("ascii"),它应该会给您一个错误。但是如果您想打印出来,您的终端应该支持utf-8编码,所以只需打印str(a)即可。

而且,您没有编写完整的程序,所以我假设str(a)是一个句子字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27455882

复制
相关文章

相似问题

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