博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]python中去掉字符串中的\xa0、\t、\n
阅读量:5981 次
发布时间:2019-06-20

本文共 1387 字,大约阅读时间需要 4 分钟。

  hot3.png

今天帮女朋友从网络上收集一些信息,但是发现提取出的信息中有“\xa0”,并且无法去掉,查阅了相关资料,后发现该字符表示空格。

\xa0 是不间断空白符  

我们通常所用的空格是 \x20 ,是在标准ASCII可见字符 0x20~0x7e 范围内。
而 \xa0 属于 latin1 (ISO/IEC_8859-1)中的扩展字符集字符,代表空白符nbsp(non-breaking space)。
latin1 字符集向下兼容 ASCII ( 0x20~0x7e )。通常我们见到的字符多数是 latin1 的,比如在 MySQL 数据库中。
有如下信息:

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

我们如何将其中的\xz0去掉呢,试了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方法目的是创建一个只有key的字典,内部利用for循环,使三个字符的asii码值成为可迭代对象(本来的整数是不可迭代的),分别对其迭代,存入字典。

关于translate方法:

Python translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中。接收到move返回的表(字典),之后对字符串进行替换。

join()方法:

join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。可见该处用join方法真的是神来之笔,可谓绝妙!

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

转载于:https://my.oschina.net/ailou/blog/1628242

你可能感兴趣的文章
Vmware虚拟机三种网络模式详解
查看>>
MySQL表级锁和行级锁
查看>>
基于Metronic的Bootstrap开发框架经验总结(11)--页面菜单的几种呈现方式
查看>>
2017第18周三
查看>>
oracle-pl/sql之一
查看>>
性能优化技巧知识梳理(1) 布局优化
查看>>
【刷算法】整数中1出现的次数(从1到n整数中1出现的次数)
查看>>
软件测试常见面试题及答案
查看>>
JavaScript深入系列15篇正式完结!
查看>>
HotSpot JVM 内存管理
查看>>
Kafka 学习笔记
查看>>
Swift 中的运行时小技巧
查看>>
第三十三章:修改SpringBoot启动Banner
查看>>
《Functional Programming in 40 minutes》笔记
查看>>
11个简单的Java性能调优技巧
查看>>
谈谈TCP协议的三次握手和四次挥手
查看>>
idea中live-template的使用
查看>>
理解区块链 这一篇就够
查看>>
Mac配置MySQL以及Squel Pro
查看>>
ES6入门---let和const
查看>>