我有以下字符串:
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)
如果您确定这是唯一不想要的角色,您可以.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)
那里没有\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)
您可以轻松地使用unicodedata来摆脱所有\x...字符。
from unicodedata import normalize
normalize('NFKD', word)
>>> 'Buffalo, IL 60625'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29696 次 |
| 最近记录: |