删除Python中字符串中的其他字符

删除Python中字符串中的其他字符,python,string,strip,Python,String,Strip,我有两个字符串(每个字符串是一组单词),其中包含特殊字符。我知道使用strip()函数,我们可以从任何字符串中删除仅一个特定字符的所有匹配项。现在,我想删除一组特殊字符(包括!@#%&*()[]{}/?)等 从字符串中删除这些不需要的字符的最佳方法是什么 在str=“@John,这是一个很棒的周末,#你呢?” out str=“John,这是一个美妙的周末,你呢”函数只删除前导字符和尾随字符。 出于您的目的,我将使用pythonset存储您的字符,迭代输入字符串,并从set中不存在的字符创建新字

我有两个字符串(每个字符串是一组单词),其中包含特殊字符。我知道使用strip()函数,我们可以从任何字符串中删除仅一个特定字符的所有匹配项。现在,我想删除一组特殊字符(包括!@#%&*()[]{}/?)等

从字符串中删除这些不需要的字符的最佳方法是什么

在str=“@John,这是一个很棒的周末,#你呢?”


out str=“John,这是一个美妙的周末,你呢”

函数只删除前导字符和尾随字符。 出于您的目的,我将使用python
set
存储您的字符,迭代输入字符串,并从
set
中不存在的字符创建新字符串。根据其他stackoverflow,这应该是有效的。最后,只需通过巧妙的
“”.join(output_string.split())
构造删除双空格即可

char_set = set("!@#%&*()[]{}/?<>")
input_string = "@John, It's a fantastic #week-end%, How about () you"
output_string = ""

for i in range(0, len(input_string)):
    if not input_string[i] in char_set:
        output_string += input_string[i]

output_string = " ".join(output_string.split())
print output_string
char_set=set(“!@#%&*()[]{}/?”)
input_string=“@John,这是一个很棒的周末,#你呢?”
输出_字符串=“”
对于范围(0,len(输入字符串))中的i:
如果未在字符集中输入字符字符串[i]:
输出字符串+=输入字符串[i]
output_string=”“.join(output_string.split())
打印输出字符串

剥离功能只删除前导字符和尾随字符。 出于您的目的,我将使用python
set
存储您的字符,迭代输入字符串,并从
set
中不存在的字符创建新字符串。根据其他stackoverflow,这应该是有效的。最后,只需通过巧妙的
“”.join(output_string.split())
构造删除双空格即可

char_set = set("!@#%&*()[]{}/?<>")
input_string = "@John, It's a fantastic #week-end%, How about () you"
output_string = ""

for i in range(0, len(input_string)):
    if not input_string[i] in char_set:
        output_string += input_string[i]

output_string = " ".join(output_string.split())
print output_string
char_set=set(“!@#%&*()[]{}/?”)
input_string=“@John,这是一个很棒的周末,#你呢?”
输出_字符串=“”
对于范围(0,len(输入字符串))中的i:
如果未在字符集中输入字符字符串[i]:
输出字符串+=输入字符串[i]
output_string=”“.join(output_string.split())
打印输出字符串
导入字符串
s=“@John,这是一个很棒的周末,#你呢?”
对于“!@#%&*()[]{}/?”中的c:
s=字符串。替换(s,c,“”)
印刷品
打印“约翰,这是一个很棒的周末,你呢”

导入字符串
s=“@John,这是一个很棒的周末,#你呢?”
对于“!@#%&*()[]{}/?”中的c:
s=字符串。替换(s,c,“”)
印刷品
打印“约翰,这是一个很棒的周末,你呢”

试试这个:

import re

foo = 'a..!b...c???d;;'
chars = [',', '!', '.', ';', '?']

print re.sub('[%s]' % ''.join(chars), '', foo)
我想这就是你想要的。

试试这个:

import re

foo = 'a..!b...c???d;;'
chars = [',', '!', '.', ';', '?']

print re.sub('[%s]' % ''.join(chars), '', foo)
我想这就是你想要的。

试试看

s = "@John, It's a fantastic #week-end%, How about () you"
chars = "!@#%&*()[]{}/?<>"
s_no_chars = "".join([k for k in s if k not in chars])
s_no_chars_spaces = " ".join([ d for d in "".join([k for k in s if k not in chars]).split(" ") if d])
s=“@John,周末很棒,你呢?”
chars=“!@#%&*()[]{}/?”
s_no_chars=“”.加入([k代表s中的k,如果k不在chars中])
s_no_chars_spaces=“”.连接([d代表d in.)。连接([k代表k in s,如果k不在chars])。如果d,则拆分(“”)
试试看

s=“@John,周末很棒,你呢?”
chars=“!@#%&*()[]{}/?”
s_no_chars=“”.加入([k代表s中的k,如果k不在chars中])
s_no_chars_spaces=“”.连接([d代表d in.)。连接([k代表k in s,如果k不在chars])。如果d,则拆分(“”)

Btw,我建议构建foreach循环不接受的字符数组,或以类似方式确保受限制字符的动态编辑。顺便说一句,我建议构建foreach循环不接受的字符数组,或以类似方式确保受限制字符的动态编辑。`()“如果没有正则表达式,将特别难以摆脱。请问你为什么要这样做?特别是,如果要防止代码注入攻击,您可能更愿意转义特殊字符,而不是删除它们。这将取决于具体的应用程序。如果没有正则表达式,“()”将特别难以消除。请问您为什么要这样做?特别是,如果要防止代码注入攻击,您可能更愿意转义特殊字符,而不是删除它们。这将取决于具体的应用程序。