Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除一大串特殊字符_Python_Regex - Fatal编程技术网

Python 删除一大串特殊字符

Python 删除一大串特殊字符,python,regex,Python,Regex,我想从我的文档中删除以下每个特殊字符: symbols = {`,~,!,@,#,$,%,^,&,*,(,),_,-,+,=,{,[,],},|,\,:,;,",<,,,>,.,?,/} 就是这样,对于用波兰语等语言编写的文档,我也删除了许多(重音/特殊)字母 如何在一个表达式中删除上面的每个特殊字符?如果有要删除的符号列表,可以构造以下简单的正则表达式: rgx = '|'.join(map(re.escape, symbols)) 示例: # example symb

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

symbols = {`,~,!,@,#,$,%,^,&,*,(,),_,-,+,=,{,[,],},|,\,:,;,",<,,,>,.,?,/}
就是这样,对于用波兰语等语言编写的文档,我也删除了许多(重音/特殊)字母


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

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

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))
将构造以下正则表达式:

\"|\<|\+|\*

\“| \不使用正则表达式,您可以通过以下方法解决此问题:

symbols={“`”、“~”、“!”、“@”、“#”、“$”、“%”、“^”、“&”、“*”、“(”、“”)、““、“-”、“+”、“=”、“{”、“[”、“]”、“}”、“|”、“\\”、“:“、”、“;”、“\”、“\”、“、“?”、“/”}
对于符号中的c:
文件=文件。替换为(c,“”)
符号=['a'、'b'、'|']
document=document.translate({ord(c):符号中的c无})

如果您想逐字删除每个字符,可以使用
str.replace
和模块:

'345lwegm34mf'

如果您需要更多的符号来替换(
string.标点符号
等于
'!“\$%&\'()*+,-./:;?@[\]^
{124;}~”
),您可以将它们添加到`string.

中的
,而无需重新:

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

@DeveshKumarSingh,谢谢你的回答,但我不知道这到底意味着什么。你能给我一个例子或我的问题的完整答案吗?@DeveshKumarSingh,它也可以是任何具有这些特殊字符的文本(就像许多文本一样)。您可以很容易地自己创建一个。@deveshkumarsing不会出现任何混乱-我们不要浪费时间-下面的其他人已经给出了答案。如果您无法找到任何文本(有多困难?),请回答:
(Hello World)]*!
应该是
Hello World
老实说,我终于开始考虑使用
.replace()
由于这里提到的原因,正则表达式也比正则表达式好:@PoeteMaudit,你应该在真正需要的情况下应用正则表达式。在这种特殊情况下,你有另一种解决方案。你也可以检查基准来回答。当然,问题是我不确定什么时候真的需要正则表达式。有什么具体的建议吗se?老实说,我不确定regex的意义是什么,尽管.replace()存在,但另一方面,我看到很多人使用前者。@PoeteMaudit,有。顺便说一句,既然你愿意回答这些问题,为什么不在这种情况下使用str.translate()?在regexs中,什么时候使用str.translate()也是同样的问题何时使用str.replace()?
symbols = {"`", "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "-", "+", "=", "{", "[", "]", "}", "|", "\\", ":", ";", "\"", "<", ",", ">", ".", "?", "/"}

for c in symbols:
    document = document.replace(c, "")
a = '345l,we.gm34mf,]-='

for char in string.punctuation:
    a = a.replace(char, '')
a
"".join(str(x) for x in document if x not in symbols)