一日一技:在字符串中批量替换单个字符

简介: 一日一技:在字符串中批量替换单个字符

在我们使用爬虫爬取下来的数据中可能混有很多不需要的字符,例如:

address = '浙江省杭州市\r\n滨江区xx小区7#门'

我现在需要移除里面的 \r\n、把 #替换为 。你可能会这样写代码:

clean_address = address.replace('\r', '')
clean_address = address.replace('\n', '')
clean_address = address.replace('#', '号')

这样的写法,处理几个字符还行,但如果要处理几百个特殊符号,那就很困难了。

所以当我们要处理很多的字符串替换时,可能会有一个配置文件来记录替换关系:

need_replace = {'\n': '', '\r': '', '#': '号'}

在这种情况下,我们可以使用字符串的 translate方法来实现替换:

address = '浙江省杭州市\r\n滨江区xx小区7#门'
need_replace = {'\n': '', '\r': '', '#': '号'}
table = str.maketrans(need_replace)
clean_address = address.translate(table)

运行效果如下图所示:

使用这种方式,可以让代码看起来更加简洁,也更方便配置。

不过当需要替换的字符串比较少时, translate的效率比 replace低。并且 translate只能实现多个单字符的替换,不能替换多字符的字符串,例如:

address = '浙江省杭州市</p>滨江区'

如果要把 </p>整体替换为空,就不能使用 translate方法。

目录
相关文章
如何去掉字符串开头,结尾或者中间的空格及其他不想要的字符
去掉文本字符串开头,结尾或者中间不想要的字符,比如空白。
|
2月前
|
Shell Perl
用sed如果原字符串或新字符串中包含特殊字符(如正斜杠/或其他特殊字符),需要用\进行转义
用sed如果原字符串或新字符串中包含特殊字符(如正斜杠/或其他特殊字符),需要用\进行转义
56 7
|
8月前
|
C语言
向字符串添加空格
首先我们可以算出s数组的大小-len,也可以直接得到spaces的大小-即要添加的空格数,那么我们要创建的数组大小是len+spacesSize吗? 不是,应该是len+spacesSize+1,这里的加一是存放一个'\n' 这里呢 我们可以写一个for i循环,用来把s中的元素放到arr里面,然后在外面定义一个falg用来充当arr的下标,存进一个元素falg++,再定义一个j=0,当i == space[j]就存放空格,每存放一个空格++.
44 0
去除字符串中的所有空格
去除字符串中的所有空格
获取字符串内双引号中的所有内容
获取字符串内双引号中的所有内容
113 0
获取字符串内双引号中的所有内容
字符串加空格
给定一个字符串,在字符串的每个字符之间都加一个空格。 输出修改后的新字符串。
123 0
用#替换字符
给定一个由大小写字母构成的字符串。 把该字符串中特定的字符全部用字符 # 替换。
87 0