【问题标题】:How to remove this \xa0 from a string in python?如何从 python 中的字符串中删除此 \xa0?
【发布时间】:2014-09-26 21:53:57
【问题描述】:

我有以下字符串:

 word = u'Buffalo,\xa0IL\xa060625'

我不想在其中出现“\xa0”。我怎样才能摆脱它?我想要的字符串是:

word = 'Buffalo, IL 06025

【问题讨论】:

  • 为什么需要删除这些?您是否还希望从字符串中删除其他代码点?为什么不能将字符串编码为正确的编码并使用生成的字符串?
  • 现在我在过去 3 年多的程序员工作后再次查看旧问题..我意识到这是一个相当愚蠢的问题。我很惊讶这个问题得到了这么多票:)

标签: python unicode


【解决方案1】:

最可靠的方法是使用unidecode module 将所有非ASCII 字符自动转换为最接近的ASCII 等效字符。

字符\xa0(不是你所说的\xa)是NO-BREAK SPACE,最接近的ASCII等价物当然是常规空格。

import unidecode
word = unidecode.unidecode(word)

【讨论】:

  • 好的,究竟如何使用unidecode 模块进行这样的转换?
  • @martineau 我没有在我的电脑上安装unidecode,所以我不愿举一个具体的例子,根据文档看起来很简单。但既然你坚持...
  • +1,因为我发现 unidecode 模块对于解决只有我的一些工具支持 unicode 的事实非常宝贵,即使这里是火箭与蚊子。
  • @DSM 尽管这个问题只涉及非换行空格字符,但我假设他们还有其他尚未遇到的 Unicode 字符。任何其他解决方案都只是推迟清算的日子。
【解决方案2】:

您可以轻松使用unicodedata 删除所有\x... 字符。

from unicodedata import normalize
normalize('NFKD', word)
>>> 'Buffalo, IL 60625'

【讨论】:

    【解决方案3】:

    如果你确定这是你唯一不想要的字符,你可以.replace它:

    >>> word.replace(u'\xa0', ' ')
    u'Buffalo, IL 60625'
    

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

    >>> word.encode('ascii', 'replace')
    'Buffalo,?IL?60625'
    

    【讨论】:

    • 我不确定我对编码方法的看法。从概念上讲,这有点奇怪,因为您从字符串开始并将其转换为字节。
    • @DSM:这有点取决于提问者首先想要这样做的为什么。我能想到的一些不同的人想要这个涉及需要 ASCII 字节,其他人仍然需要 Unicode,还有一些人涉及的问题首先不是问题......
    【解决方案4】:

    那里没有\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
    

    【讨论】:

      【解决方案5】:

      这似乎适用于摆脱非 ascii 字符:

      fixedword = word.encode('ascii','ignore')
      

      【讨论】:

      • 这将删除所有空格,并留下错误的结果。
      猜你喜欢
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      相关资源
      最近更新 更多