python去除空格,tab制表符和\\n换行符的小技巧分享

作者:AshleyXM 时间:2022-05-12 14:20:39 

python去除空格,tab制表符和\n换行符

python中常用的替换字符串的函数有replace(),其用法相信大家都比较熟悉

举个例子

str="hello world  hi there"
str.replace(" ","")  #将str中的空格用空串替代,str本身不变,只改变显示的结果

然而,当处理大量文本的时候,需要把文本中所有的空格、制表符和换行符全部都换为空串时,replace()函数不是一个好的选择。

原因是首先写法太复杂,其次是它的替代效果太局限,我之所以这么说是因为今天在做项目的时候遇到的一个给定的文本中出现的空格很怪异,它既不是普通的单个空格,也不是制表符,更不是换行符,最后用replace()来做怎么都替换不了那个“怪异”的空格。

这里推荐使用re模块中的sub()函数来去除字符串中的所有空格,制表符和换行符,用法如下:

import re
str="""
hello  123        world  456

hello  wish you good luck!
"""
print(re.sub('\s|\t|\n','',str))  #\s代表空格,\t代表制表符,\n代表换行符

这种写法和replace()比起来更简单,而且re.sub()的使用也很灵活,所以建议使用re.sub()来实现去除空格的任务。

上面的代码我发现还可以更加简化:

print(re.sub('\s','',str))

即re.sub()函数的pattern参数中不包含\t和\n也可以实现替换它们的功能,我想应该是\s包含了\t和\n,这也是为什么我所遇到的“怪异”的空格re.sub()能去掉的原因了吧。但是\t不包含\s和\n的功能,\n也不包含\s和\t的功能,不要误用哦!

python内容去掉“空格,制表符,其他空白”

学习python爬虫的时候,部分内容无法用xpath匹配,就考虑用正则表达式,此时先把response返回来的list通过jion来转换成string

body1=response.xpath('//body//text()').extract()
       body1=''.join(body1)
       body1 = re.sub('\n', '', body1).replace(' ', '').strip()
       body1=re.sub('\s','',body1)

在pycharm中运行发现获取的内容是空白。

尝试打印长度,发现不为0,所以就需要想办法把换行符去掉,把空格去掉。

re.sub('\n', '', body1)

利用re模块的sub()替换掉换行,sub(pattern, repl, string, count=0, flags=0)

其中pattern是正则表达式,模式字符串。

  • repl是要替换成的内容

  • string是要进行编辑的string内容

这三个参数为必选,还有下面两个默认参数。

  • count=0:模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

  • flags=0标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等

python去除空格,tab制表符和\\n换行符的小技巧分享

  • \n:会被处理为对应的换行符;

  • \r:会被处理为回车符;

常用的去掉空格的方法

去掉左边空格

str1 = " String's type is str "
print(str1,end='')
print('end')
print(str1.lstrip(),end='')
print('end')
# String's type is str end
#String's type is str end

去掉右边空格

str1 = " String's type is str "
print(str1,end='')
print('end')
print(str1.rstrip(),end='')
print('end')

# String's type is str end
# String's type is strend

去掉两头的空格

str1 = " String's type is str "
print(str1,end='')
print('end')
print(str1.strip(),end='')
print('end')

# String's type is str end
#String's type is strend

用字符串的方法去掉所有空格,制表符或者其他空白

str1 = " String's type is str "
print(str1,end='')
print('end')
print(str1.replace(' ', ''),end='')
print('end')
# String's type is str end
#String'stypeisstrend

用正则的方法去掉所有空格,制表符或者其他空白

import re
str1 = " String's type is     str "
print(str1,end='')
print('end')
str1=re.sub(r"\s+", "", str1)
print(str1.replace(' ', ''),end='')
print('end')

其中正则表达式\s+表示匹配空的内容1到无限次。

表示匹配前一个字符1到无限次

来源:https://blog.csdn.net/AshleyXM/article/details/106246081

标签:python,空格,tab制表符,\n换行符
0
投稿

猜你喜欢

  • Python必备技能之debug调试教程详解

    2023-03-01 19:26:10
  • 如何清除Vbscript惹出来的中文乱码?

    2010-01-18 20:50:00
  • Python爬取科目四考试题库的方法实现

    2023-02-14 00:29:39
  • 为什么定位会被float和clear影响!

    2008-11-10 11:06:00
  • Python 动态变量名定义与调用方法

    2023-07-29 22:36:05
  • 编写Smarty插件在模板中直接加载数据的详细介绍

    2023-11-15 09:14:47
  • 实例讲解在MySQL中如何导出整个数据库

    2009-09-01 10:03:00
  • 动态程序防采集的新方法

    2010-04-24 15:24:00
  • IE6实现min-width

    2008-06-12 12:40:00
  • 统计热门文章的算法

    2008-03-16 15:40:00
  • ASP开发中可能遇到的错误信息中文说明大全(整理收集)第1/2页

    2010-07-02 09:50:31
  • python多线程socket编程之多客户端接入

    2021-01-26 10:14:52
  • php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)

    2023-10-17 14:16:56
  • PHP header()函数常用方法总结

    2023-09-06 16:51:50
  • 基于Python共轭梯度法与最速下降法之间的对比

    2022-10-27 06:58:12
  • 教你快速掌握数据库查询优化的实用技巧

    2008-11-28 15:10:00
  • oracle执行cmd的实现方法

    2009-04-24 12:10:00
  • python实现简易云音乐播放器

    2021-07-02 10:13:43
  • 基于Python实现五子棋游戏

    2023-01-29 21:47:42
  • 我的栅格系统实现

    2008-09-21 13:50:00
  • asp之家 网络编程 m.aspxhome.com