如何通过正则表达式删除基于相同索引的唯一字符
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]
在学习 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]