正则表达式删除所有非字母/非数字字符[Python]?

时间:2017-09-08 04:13:48

标签: python regex dictionary

我有一本字典:

d = {'<word>':1,'-word':12, 'word':1, '$(*#%&^#&@#':2, '!@**$12word*&':4, '::':10, '1230324':1, '+635':5}

我只想删除所有非字母/非数字字符的条目,即, . ? ! : {{ 1}}等等。

我已尝试过以下

;

但他们不会回复我想要的结果,即:

regex = re.compile('[\!\?\.\,\:\;\*\(\)\-\+\<\>]')
regex = re.compile('a-zA-Z0-9_')
regex = re.compile('\\W')
regex = re.compile('[\W_]+') // from [1]

删除条目new_dict = {'<word>':1,'-word':12, 'word':1, '!@**$word*&':4, '1230324':1, '+635':5} '$(*#%&^#&@#'

另外,我使用此代码删除条目,以防它有用:

::

[1] Stripping everything but alphanumeric chars from a string in Python

1 个答案:

答案 0 :(得分:1)

您希望将\ W的整个字符串与^\W+$匹配。

这样的事情会:

$ cat test.py
import re

pattern = r"^\W+$"

d = {'<word>':1,'-word':12, 'word':1, '$(*#%&^#&@#':2, '!@**$12word*&':4, '::':10, '1230324':1, '+635':5}

for k in d.keys():
    matches = re.search(pattern, k)
    if (matches):
        print 'to remove: ' + k
        del d[k]

for k in d.keys():
    print k

编辑:问题发生了变化:OP希望一次创建dict。可以这样做:

new_dict = {k:d[k] for k in d.keys() if not(re.search(pattern,k))}