我有一个如下所示的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
答案 0 :(得分:2)
这是硬编码的,但是可以使用:
df.email = df.email.str.replace(".+\['|'].+", '')
df.id = df.id.str.replace(".+\['|'].+", '')
>>> 'test@test.com'
>>> '123abc_d456_789_fgh'
答案 1 :(得分:1)
根据评论,您可能要做的是捕获捕获组中方括号之间的内容。
在替换中,使用第一个捕获组。
METHOD
这将匹配
\{'[^']+':\s*\['([^][]+)'\]}
匹配\{
{
匹配'[^']+'
,然后不匹配'
1次以上'
字面上匹配:
匹配0+次空白字符,然后匹配\s*\['
[
捕获组,不匹配([^][]+)
或[
]
匹配'\]
]
字面上匹配