删除一大堆特殊字符

时间:2019-05-30 10:30:19

标签: python regex

我想从我的文档中删除以下每个特殊字符:

symbols = {`,~,!,@,#,$,%,^,&,*,(,),_,-,+,=,{,[,],},|,\,:,;,",<,,,>,.,?,/}

我之所以不做这样的事情的原因:

document = re.sub(r'([^\s\w]|_)+', '', document)

这样,对于以波兰语等语言编写的文档,我也删除了很多(带重音/特殊)字母。

如何在一个表达式中删除上面的每个特殊字符?

5 个答案:

答案 0 :(得分:1)

您可以使用str.replace()来解决不带正则表达式的问题:

symbols = {"`", "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "-", "+", "=", "{", "[", "]", "}", "|", "\\", ":", ";", "\"", "<", ",", ">", ".", "?", "/"}

for c in symbols:
    document = document.replace(c, "")

答案 1 :(得分:0)

如果您有要删除的符号列表,则可以构造此简单的正则表达式:

rgx = '|'.join(map(re.escape, symbols))

示例:

# example symbols list
symbols = ['"', '<', '+', '*']

document = '<div prop="+*+">'

rgx = '|'.join(map(re.escape, symbols))

document = re.sub(rgx, '', document)

print(document)

输出:

div prop=>

代码'|'.join(map(re.escape, symbols))将构造以下正则表达式:

\"|\<|\+|\*

这意味着匹配符号"<+*中的任何一个。

答案 2 :(得分:0)

symbols = ['a', 'b', '|']
document = document.translate({ord(c):None for c in symbols})

答案 3 :(得分:0)

如果要从字面上删除每个字符,可以使用str.replacehttps://dev.mysql.com/doc/refman/5.6/en/view-algorithms.html模块:

a = '345l,we.gm34mf,]-='

for char in string.punctuation:
    a = a.replace(char, '')
a
  

'345lwegm34mf'

如果您需要替换更多符号(string.punctuation等于字符串中的'!"#$%&\'()*+,-./:;<=>?@[\\]^_ {|}〜'), you can add them to a

答案 4 :(得分:0)

没有回复:

"".join(str(x) for x in document if x not in symbols)