去掉字符串中不需要的字符(Python)

在编写程序的时候我们经常遇到字符,
但是这些字符串有事并不全是我们需要的,
这是我们就需要对字符串进行处理,
去掉字符串中我们不需要的字符。
常用的方法有如下五种:

一、字符串 strip(),lstrip(),rstrip() 方法去掉字符串字符
使用 python 自带的函数进行处理;

strip() 方法用于移除字符串头尾指定的字符(默认为空格)。
lstrip() 方法用于截掉字符串左边的空格或指定字符。
rstrip() 删除 string 字符串末尾的指定字符(默认为空格)。

语法:

str.strip([chars]);
  • chars -- 指定的字符内容。
str = '    https://fengkui.net     '
print(str.strip()) # 去掉两端字符 'https://fengkui.net'
print(str.lstrip()) # 去掉左侧字符 'https://fengkui.net     '
print(str.rstrip()) # 去掉右侧字符 '    https://fengkui.net'

二、删除单个固定位置的字符串,可以使用切片 + 拼接的方式

str = 'https://fe$ngkui.net' # 去掉$
str = str[:10] + str[11:] # 先切片 再 + 拼接的方式
print(str) # 'https://fengkui.net'

三、删除多个固定的字符串,可以先去掉指定字符串转成列表,然后再拼接成字符串

str = 'htt$ps://fe$ngkui.n$et' # 去掉$
str_list = str.split('$') # 先去掉指定字符串转列表
str = ''.join(str_list) # 然后再拼接 列表
print(str) # 'https://fengkui.net'

四、字符串的 replace() 方法或正则表达式 re.sub() 替换的方法删除任意子串
replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 语法:

str.replace(old, new[, max])
  • old -- 将被替换的子字符串。
  • new -- 新字符串,用于替换old子字符串。
  • max -- 可选字符串, 替换不超过 max 次
str = 'htt$ps://fe$ngkui.n$et' # 去掉$
str = str.replace('$','') # 用空的内容替换掉$
print(str) # 'https://fengkui.net'

Python 的re模块提供了 re.sub 用于替换字符串中的匹配项。

import re
str = 'htt$ps://fe$ngkui.n$et' # 去掉$
str = re.sub(r'[\$]', '', str) # 用空的内容替换掉$
print(str) # 'https://fengkui.net'

五、字符串的 translate() 方法,可以同时删除多种不同字符

import unicodedata
s = 'abc1234xyz'

t1 = s.translate({ord('a'): 'X'}) # 'Xbc1234xyz'
print(t1)

t2 = s.translate({ord('a'): 'X', ord('b'): 'Y'}) # 'XYc1234xyz'
print(t2)

mk = s.maketrans('abcxyz', 'XYZABC') # '{97: 88, 98: 89, 99: 90, 120: 65, 121: 66, 122: 67}'
t3 = s.translate(mk) # 'XYZ1234ABC'
print(t3)

t4 = s.translate({ord('a'): None}) # 'bc1234xyz'
print(t4)

# 将'ní hǎo,zhōng guō'转成'ni hao,zhong guo'
str = unicodedata.normalize('NFD','ní hǎo,zhōng guō')
c = unicodedata.normalize('NFD','ǎ')
# print(len(c), c[0], c[1]) # 2 a ̌

str1 = dict.fromkeys([ord(s) for s in str  if unicodedata.combining(s)], None)
str2 = str.translate(str1)
print(str2) # 'ni hao,zhong guo'

冯奎博客
请先登录后发表评论
  • latest comments
  • 总共0条评论