首页 > 解决方案 > 如何删除并仅保留某些非字母数字字符?

问题描述

我的 df 看起来像这样:

email                                    id
{'email': ['test@test.com']}           {'id': ['123abc_d456_789_fgh']}

当我像这样删除非字母数字字符时:

df.email = df.email.str.replace('[^a-zA-Z]', '')
df.email = df.email.str.replace('email', '')


df.id = df.id.str.replace('[^a-zA-Z]', '')
df.id = df.id.str.replace('id', '')

列如下所示:

email                    id
testtestcom              123abcd456789fgh

如何告诉代码不要在方括号中删除任何内容,而是将所有非字母数字字符放在方括号外?

新的 df 应该是这样的:

email                        id
test@test.com                123abc_d456_789_fgh

标签: python-3.xpandasreplacenon-alphanumeric

解决方案


这是硬编码的,但有效:

df.email = df.email.str.replace(".+\['|'].+", '')
df.id = df.id.str.replace(".+\['|'].+", '')

>>> 'test@test.com'
>>> '123abc_d456_789_fgh'

推荐阅读