如何从python中的字符串中删除此\ xa0?

slo*_*ope 9 python unicode

我有以下字符串:

 word = u'Buffalo,\xa0IL\xa060625'
Run Code Online (Sandbox Code Playgroud)

我不希望那里有"\ xa0".我怎么能摆脱它?我想要的字符串是:

word = 'Buffalo, IL 06025
Run Code Online (Sandbox Code Playgroud)

Mar*_*som 13

最强大的方法是使用unidecode 模块自动将所有非ASCII字符转换为最接近的ASCII等效字符.

角色\xa0(不是\xa你所说的)是一个无破坏的空间,最接近的ASCII等价物当然是一个常规空间.

import unidecode
word = unidecode.unidecode(word)
Run Code Online (Sandbox Code Playgroud)


mgi*_*son 9

如果您确定这是唯一不想要的角色,您可以.replace

>>> word.replace(u'\xa0', ' ')
u'Buffalo, IL 60625'
Run Code Online (Sandbox Code Playgroud)

如果您需要处理所有非 ascii 字符,编码和替换坏字符可能是一个好的开始...:

>>> word.encode('ascii', 'replace')
'Buffalo,?IL?60625'
Run Code Online (Sandbox Code Playgroud)


aba*_*ert 6

那里没有\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
Run Code Online (Sandbox Code Playgroud)


Ami*_*ani 5

您可以轻松地使用unicodedata来摆脱所有\x...字符。

from unicodedata import normalize
normalize('NFKD', word)
>>> 'Buffalo, IL 60625'
Run Code Online (Sandbox Code Playgroud)