如何删除除\ / @ + - :,|之外的非字母数字字符#

时间:2015-01-16 17:47:49

标签: python python-2.7 alphanumeric

我有

import re

cadena = re.sub('[^0-9a-zA-Z]+', '', cadena)

如何删除除此之外的非字母数字字符 \ / @ + - :,| #

2 个答案:

答案 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)