我有
import re
cadena = re.sub('[^0-9a-zA-Z]+', '', cadena)
如何删除除此之外的非字母数字字符 \ / @ + - :,| #
答案 0 :(得分:4)
确保转义字符类中的反斜杠。使用原始字符串进行正则表达式,无需进一步转义。
cadena = re.sub(r'[^0-9a-zA-Z\\/@+\-:,|#]+', '', cadena)
请注意,下划线被视为字母数字字符。如果您不需要剥离它,则可以简化表达式。
cadena = re.sub(r'[^\w\\/@+\-:,|#]+', '', cadena)
答案 1 :(得分:1)
示例1: (我认为最简单的方法)
# String
string = 'ABC#790@'
# Remove the #, @ and 7 from the string. (You can choose whatever you want to take out.)
line = re.sub('[#@7]', '', string)
# Print output
print(line)
示例2:
您还可以使用子字符串,这样,如果字母与字符串中不需要的字母匹配,您可以查看每个位置。 如果该字母是您想要保留的字母,则将该字母添加到新字符串中。否则你通过。
例如: String''是你的字符串,字符串'd'包含你要过滤掉的字母。
s = 'abc/geG#gDvs@h81'
d = '#@/'
e = ''
i = 0
j = 0
l = len(s)
g = len(d)
a = False
while i < l:
# Grab a single letter
letter1 = s[i:i+1]
# Add +1
i = i + 1
# Look if the letter is in string d
while j < g:
# Grab a single letter
letter2 = d[j:j+1]
# Add +1
j = j + 1
# Look if letter is not the same.
if (letter1 != letter2):
a = True
else:
a = False
break
# Reset j
j = 0
# Look if a is True of False.
# True: Letter does not contain letters from string d.
# False: Letter does contain letters from string d.
if (a == True):
e = e + letter1
else:
pass
# Print the result
print(e)