Python去除字符串中\xa0、\t、\n字符的几种方法

向北走
向北走
发布时间:2026-10-12 | 2人浏览过
原创

本文介绍如何在Python中去除字符串中的不间断空白符\xa0、制表符\t及换行符\n。通过对比translate方法结合fromkeys,以及利用split()和join()的组合技巧,提供高效且简洁的代码解决方案,并解析相关内置函数的原理。

Python去除字符串中\xa0、\t、\n字符

在帮女朋友从网络上收集信息时,发现提取出的数据中包含“\xa0”字符,且常规方法难以直接去除。经过查阅相关资料,确认该字符代表一种特殊空格。

\xa0 是不间断空白符  

通常使用的空格字符编码为 \x20,属于标准ASCII可见字符范围(0x20~0x7e)。

\xa0 则属于 Latin1(ISO/IEC_8859-1)字符集中的扩展字符,代表非断行空格(non-breaking space)。

Latin1 字符集向下兼容 ASCII 编码(0x20~0x7e)。我们在日常使用中遇到的多数字符属于 Latin1 编码,例如在 MySQL 数据库中常见的字符集设置。

存在如下示例数据:

'T-shirt\xa0\xa0短袖圆领衫,体恤衫\xa0,', 'V-neck\xa0\xa0V型领\xa0sleeve\xa0\xa0袖子\xa0,',

如何去除其中的 \xa0 字符?尝试使用 re 模块的 sub 方法后发现无效,经进一步查阅资料后成功解决该问题。

具体解决方法如下:

>>> inputstring = u'\n                      Door:\xa0Novum          \t      '
>>> move = dict.fromkeys((ord(c) for c in u"\xa0\n\t"))
>>> output = inputstring.translate(move)
>>> output
'                      Door:Novum                '

此外,还有一种更简便的方法,利用 split 函数实现:

>>> s
'T-shirt\xa0\xa0短袖圆领衫,体恤衫\xa0'
>>> out = "".join(s.split())
>>> out
'T-shirt短袖圆领衫,体恤衫'

可以看出,利用 translate 方法和 split() 函数可以完美解决此类问题,同时还能替换 \t 和 \n 字符,这也带来了新的学习收获。

关于 ord 函数:

ord() 函数是 chr() 函数(针对8位ASCII字符串)或 unichr() 函数(针对Unicode对象)的配对函数。它接收一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值或Unicode数值。如果提供的Unicode字符超出Python定义的范围,则会引发 TypeError 异常。

关于 fromkeys 方法:

dict 中的 fromkeys 方法用于创建一个仅包含键的字典。其内部利用 for 循环,将三个字符的 ASCII 码值转换为可迭代对象(原始整数不可迭代),分别迭代后存入字典中。

关于 translate 方法:

Python 的 translate() 方法根据参数 table 给出的转换表(包含 256 个字符)转换字符串中的字符,需过滤掉的字符放入 del 参数中。该方法接收由 move 返回的表(字典),随后对字符串执行替换操作。

join() 方法:

join() 用于连接字符串数组,将字符串、元组或列表中的元素以指定的分隔符连接,生成一个新的字符串。此处使用 join 方法堪称神来之笔,效果极佳。

值得注意的是,split 方法在不带参数时,表示分割所有的换行符、制表符和空格。

去除字符串中的 \xa0 不间断空白符

记录几个 Python 解析页面时遇到的小问题解决方法

去除字符串中的 \xa0 不间断空白符

    # 方法一:用编码转换的方式
     import unicodedata
     s = unicodedata.normalize("NFKD", s)
    # 方法二:直接去除所有空白
    s= ''.join(s.split())
    # 方法三:自己转换编码ord方式,或替换replace等(不推荐)

XPath 解析取标签下所有文字

    # 取出标签下所有文字,有3种方法:
    # 1.用//text()取所有文字然后join;
    remediation = cve_page.xpath("//h2[@id='remediation']/following-sibling::p[1]//text()")
    remediation = ''.join(remediation).strip()
    # 2.用xpath('string(.)')解析;
    remediation = cve_page.xpath("//h2[@id='remediation']/following-sibling::p[1]")
    remediation=remediation[0].xpath('string(.)').strip()
    # 3.转换为str后用正则(不推荐)

总结

以上为个人经验总结,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表