python中去掉字符串中的\xa0、\t、\n

news/2024/7/24 7:33:44

转载自:https://blog.csdn.net/wangbowj123/article/details/78061618

今天帮女朋友从网络上收集一些信息,但是发现提取出的信息中有“\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方法中不带参数时,表示分割所有换行符、制表符、空格。
 


http://www.niftyadmin.cn/n/957749.html

相关文章

太坑了,刚才写错了一个字母,把const App写成了const app

用html可以 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>陈尼克</title> <style>[v-cloak] {display: none;} </style> </head><body><div id"app" v-cloak><p>…

maven项目集成findbugs详解

文章目录 0、概述 一、接入方式 二、如何使用 方式一、在控制台中执行打包命令 方式二、使用IntelliJ IDEA的maven工具&#xff08;其他IDE用户忽略&#xff09; 三、bug详情查看 四、忽略指定的包、类、类中的方法 步骤一、在pom.xml中 增加配置。 步骤二、增加配置文件&#…

修改了,添加了一行代码,还是不行,出不来,在vite2项目里

<template><title>陈尼克</title><div id"app"><p>姓名: {{ name }}</p><p>职业: {{ state.work }}</p></div> </template><script> //import { defineProps, reactive } from vueimport { creat…

python中的for循环如何控制步长

for i in range(开始/左边界, 结束/右边界, 步长):print i 例如 for i in range(1, 10, 2):print i 等价于 for (i1;i<10;i2) 1 3 5 7 9 [Finished in 0.4s]

mybatis 日志Spring Boot+log4j2+yml配置

简单了解 输出mybatis的相关信息&#xff0c;要在控制台输出就需要支持log看了下面的文档我们大概会知道一些相关信息 https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html 如果让系统使用log4j要做对应的修改 为什么使用log4j 2&#xff…

可以把work改成age

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>陈尼克</title> <style>[v-cloak] {display: none;} </style> </head><body><div id"app" v-cloak><p>姓名: {{ n…

为什么必须用const { createApp, ref, reactive } = Vue;而import { defineProps, reactive } from ‘vue‘不行,二者有什么区

这个直接不显示 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>陈尼克</title> <style>[v-cloak] {display: none;} </style> </head><body><div id"app" v-cloak><…

darknet在windows上的安装编译与使用

目录 目录 前言 1&#xff0c;操作系统环境 2&#xff0c;下载darknet 3&#xff0c;下载安装Cygwin 4&#xff0c;编译darknet 5&#xff0c;使用darknet 前言 本篇文章参考这篇&#xff1a; http://www.cnblogs.com/jackkwok/p/9045890.html 但部分细节随着时间发生了变化。…