Series.str.replace() 的向量化字符串方法

1 投票
1 回答
794 浏览
提问于 2025-04-18 14:32

在这个关于向量化字符串方法的文档中(http://pandas.pydata.org/pandas-docs/stable/basics.html#vectorized-string-methods)...

In [204]: s3 = Series(['A', 'B', 'C', 'Aaba', 'Baca',
   .....:             '', np.nan, 'CABA', 'dog', 'cat'])
   .....: 

In [205]: s3
Out[205]: 
0       A
1       B
2       C
3    Aaba
4    Baca
5        
6     NaN
7    CABA
8     dog
9     cat
dtype: object

In [206]: s3.str.replace('^.a|dog', 'XX-XX ', case=False)
Out[206]: 
0           A
1           B
2           C
3    XX-XX ba
4    XX-XX ca
5            
6         NaN
7    XX-XX BA
8      XX-XX 
9     XX-XX t
dtype: object

为什么在上面的 .replace() 示例中,'ba' 和 'BA' 没有被传入 replace() 方法的第一个参数中的正则表达式选中,也没有被替换成 'XX-XX' 呢?我觉得这个表达式的意思是说,任何字符后面跟着一个 'a' 或者 'dog',都应该替换成 'XX-XX',而且不管大小写都应该替换。

1 个回答

2

这是因为'ba'和'BA'并不是字符串的开头,而替代方案中有一个^符号在^.a里,这个符号表示要从字符串的开头开始匹配。

来源于:
参考 - 这个正则表达式是什么意思?

撰写回答