我有以下字符串:
word = u'Buffalo,\xa0IL\xa060625'
我不想在那里放置 "\xa0"。如何去掉它?我想要的字符串是:word = 'Buffalo, IL 06025
我有以下字符串:
word = u'Buffalo,\xa0IL\xa060625'
我不想在那里放置 "\xa0"。如何去掉它?我想要的字符串是:word = 'Buffalo, IL 06025
unidecode
模块,自动将所有非ASCII字符转换为它们最接近的ASCII等效字符。\xa0
(不是您所述的\xa
)是一个不间断空格,最接近的ASCII等效字符当然是普通空格。import unidecode
word = unidecode.unidecode(word)
unidecode
,所以我不确定是否能给出一个具体的例子,但根据文档来看似乎很简单。既然你坚持…… - Mark Ransom如果你确定这是唯一不想要的字符,你可以使用.replace
函数进行替换:
>>> word.replace(u'\xa0', ' ')
u'Buffalo, IL 60625'
如果你需要处理所有的非ascii字符,编码和替换坏字符可能是一个不错的开始...
>>> word.encode('ascii', 'replace')
'Buffalo,?IL?60625'
unicodedata
来消除所有\x...
字符。from unicodedata import normalize
normalize('NFKD', word)
>>> 'Buffalo, IL 60625'
这里没有 \xa
。如果你尝试把它放进字符串字面值中,如果你很幸运,你会得到一个语法错误;如果你不幸,它将吞噬下一个尝试的字符,因为 \x
序列必须后跟两个十六进制数字。
你所拥有的是 \xa0
,它是字符 U+00A0 的转义序列,也称为“NO-BREAK SPACE”。
我认为你想用空格替换它们,但无论你想做什么都很容易写出来:
word.replace(u'\xa0', u' ') # replaced with space
word.replace(u'\xa0', u'0') # closest to what you were literally asking for
word.replace(u'\xa0', u'') # removed completely
以下方法可以用来去除非ASCII字符:
fixedword = word.encode('ascii','ignore')