首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让python解释器正确处理字符串操作中的非ASCII字符?

如何让python解释器正确处理字符串操作中的非ASCII字符?
EN

Stack Overflow用户
提问于 2009-08-27 15:53:31
回答 9查看 203.7K关注 0票数 105

我有一个字符串,看起来像这样:

代码语言:javascript
复制
6 918 417 712

修剪这个字符串的最简单的方法(就我所理解的Python)是,简单地说这个字符串在一个名为s的变量中,我们得到:

代码语言:javascript
复制
s.replace('Â ', '')

这应该能起到作用。但是,它当然会抱怨文件blabla.py中的非ASCII码字符'\xc2'没有编码。

我从来都不太理解如何在不同的编码之间切换。

这是代码,它确实和上面的一样,但是现在它在上下文中。该文件在记事本中另存为UTF-8,并具有以下标题:

代码语言:javascript
复制
#!/usr/bin/python2.4
# -*- coding: utf-8 -*-

代码:

代码语言:javascript
复制
f = urllib.urlopen(url)

soup = BeautifulSoup(f)

s = soup.find('div', {'id':'main_count'})

#making a print 's' here goes well. it shows 6Â 918Â 417Â 712

s.replace('Â ','')

save_main_count(s)

它不会超过s.replace..。

EN

回答 9

Stack Overflow用户

发布于 2009-08-27 16:57:24

丢弃所有不能解释为ASCII的字符:

代码语言:javascript
复制
def remove_non_ascii(s):
    return "".join(c for c in s if ord(c)<128)

请记住,这可以保证与UTF-8编码一起工作(因为多字节字符中的所有字节都将最高位设置为1)。

票数 159
EN

Stack Overflow用户

发布于 2009-08-27 15:59:54

代码语言:javascript
复制
>>> unicode_string = u"hello aåbäcö"
>>> unicode_string.encode("ascii", "ignore")
'hello abc'
票数 38
EN

Stack Overflow用户

发布于 2012-04-22 21:12:10

以下代码将用问号替换所有非ASCII字符。

代码语言:javascript
复制
"".join([x if ord(x) < 128 else '?' for x in s])
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1342000

复制
相关文章

相似问题

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