我想从我的文档中删除以下每个特殊字符:
symbols = {`,~,!,@,#,$,%,^,&,*,(,),_,-,+,=,{,[,],},|,\,:,;,",<,,,>,.,?,/}
我之所以不做这样的事情的原因:
document = re.sub(r'([^\s\w]|_)+', '', document)
这样,对于以波兰语等语言编写的文档,我也删除了很多(带重音/特殊)字母。
如何在一个表达式中删除上面的每个特殊字符?
答案 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.replace
和https://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)