如何通过正则表达式删除基于相同索引的唯一字符

How to remove unique character based on the same index via regex

在学习 SO 的其中一个问题时,使用正则表达式提取值。

我想知道如果每一行中的字符都相同并且匹配相同的索引位置,我们如何实现一个正则表达式来删除所有字符。

下面是数据框:

print(df)
   column1
0  [b,e,c]
1  [e,a,c]
2  [a,b,c]

正则表达式:

 df.column1.str.extract(r'(\w,\w)')

 print(df)
  column1
0     b,e
1     e,a
2     a,b

在上面的正则表达式中,它提取了所需的字符,但我也想保留 [] 这个。

您可以使用

df['column2'] = df['column1'].str.replace(r'(?s).*?\[(\w,\w).*', r'[]', regex=True)
df['column2'] = '[' + df['column1'].str.extract(r'(\w,\w)') + ']'

.str.replace方法中,(?s).*?\[(\w,\w).*匹配任意零个或多个字符尽可能少,然后是一个[,然后捕获一个单词char + 逗号+一个单词char进入组 1 (</code>),然后是字符串的其余部分,并将匹配项替换为 <code>[ + 组 1 值 + ].

在第二种方法中,[] 被添加到提取的结果中,此解决方案最适合此处的玩具示例。

这是一个 Pandas 测试:

>>> import pandas as pd
>>> df = pd.DataFrame({'column1':['[b,e,c]']})
>>> df['column1'].str.replace(r'(?s).*?\[(\w,\w).*', r'[]', regex=True)
0    [b,e]
Name: column1, dtype: object

>>> '[' + df['column1'].str.extract(r'(\w,\w)') + ']'
       0
0  [b,e]