我有几个字符串(每个字符串是一组单词),其中包含特殊字符。我知道使用strip()函数,我们可以从任何字符串中删除所有出现的只有一个特定字符。现在,我想删除一组特殊字符(包括!@#%& *()[] {} /?<>)等。
从字符串中删除这些不需要的字符的最佳方法是什么。
in-str =“@ John,这是一个非常棒的#周末%,关于()你”
out-str =“John,这是一个很棒的周末,你呢?”
答案 0 :(得分:2)
import string
s = "@John, It's a fantastic #week-end%, How about () you"
for c in "!@#%&*()[]{}/?<>":
s = string.replace(s, c, "")
print s
打印“约翰,这是一个梦幻般的周末,你呢?”
答案 1 :(得分:1)
strip
函数仅删除前导和尾随字符。
为了您的目的,我将使用python set
来存储您的字符,迭代您的输入字符串并使用set
中不存在的字符创建新字符串。根据其他stackoverflow article,这应该是有效的。最后,只需通过巧妙的" ".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
答案 2 :(得分:1)
试试这个:
import re
foo = 'a..!b...c???d;;'
chars = [',', '!', '.', ';', '?']
print re.sub('[%s]' % ''.join(chars), '', foo)
我认为这就是你想要的。
答案 3 :(得分:0)
试
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])