Python 有些正则表达式不';不能在numpy阵列中工作
我从以下几点开始:Python 有些正则表达式不';不能在numpy阵列中工作,python,regex,numpy,Python,Regex,Numpy,我从以下几点开始: vals Out[205]: array([['NA\xa0[1] (16.0\xa0to\xa0N/A)', '12.0\xa0[2]', 'NA\xa0[1]']], dtype=object) 然后: 然后: v = np.char.replace(v,'\s*\[[0-9]+\]\s*' , '').tolist() v Out[212]: [['NA [1] (16.0 to N/A)', '12.0 [2]', 'NA [1]']] 问题是,第二个替代品不
vals
Out[205]: array([['NA\xa0[1] (16.0\xa0to\xa0N/A)', '12.0\xa0[2]', 'NA\xa0[1]']], dtype=object)
然后:
然后:
v = np.char.replace(v,'\s*\[[0-9]+\]\s*' , '').tolist()
v
Out[212]: [['NA [1] (16.0 to N/A)', '12.0 [2]', 'NA [1]']]
问题是,第二个替代品不起作用,而第一个替代品起作用。正则表达式似乎还可以-它应该删除这样的[1]
字符
我后来发现,它与Python和方括号中的regex有关:
[2]
有效[0-9]
无效。如何处理?在使用熊猫之前找到了临时答案。只需在列表中应用re.sub
[re.sub('\s*\[[0-9]+]\s*', '', x) for x in v[0]]
Out[240]: ['NA(16.0 to N/A)', '12.0', 'NA']
easy peasy
np.char.replace
似乎不支持regex.Ah,所以我的方法是错误的?它只替换字符?在这种情况下,我应该使用什么?如果您使用的是numpy,请向前迈出一步,使用pandas,它广泛支持regex。这不是一个完美的提示,但相关:(关闭,有点不同)
[re.sub('\s*\[[0-9]+]\s*', '', x) for x in v[0]]
Out[240]: ['NA(16.0 to N/A)', '12.0', 'NA']