spl*_*ter 3 regex string series python-3.x pandas
我想在应用pandas.Series.str.replace时使用正则表达式.我知道它需要正则表达式,但我的输出不是预期的.这是一个简单的例子.假设我有
ser = pd.Series(['asd3', 'qwe3', 'asd4', 'zxc'])
Run Code Online (Sandbox Code Playgroud)
我想打开'asd3'和'asd4'进入'asd'.也就是说,只需删除末尾的任何整数.我正在使用代码:
ser.str.replace('asd([0-9])','')
Run Code Online (Sandbox Code Playgroud)
Bote,我正在使用([0-9])符号,我解释说:对于该系列的任何元素,如果它看起来像'asd([0-9])',然后[0-9]用``(即删除它)替换.但我得到的是
0
1 qwe3
2
3 zxc
Run Code Online (Sandbox Code Playgroud)
而我想得到的是:
0 asd
1 qwe3
2 asd
3 zxc
Run Code Online (Sandbox Code Playgroud)
这是一个简单的例子,我的正则表达式字符串比这更丑陋,但我希望这表达了我打算做的事情.
在您的情况下,.replace('asd([0-9])','')只需删除asd它后面的任何数字.
使用
ser.str.replace('asd[0-9]+','asd')
Run Code Online (Sandbox Code Playgroud)
要么
ser.str.replace('(asd)[0-9]+',r'\1')
Run Code Online (Sandbox Code Playgroud)
在.replace('asd[0-9]+','asd')将取代asd和之后的任何数字1+用asd,而在.replace('(asd)[0-9]+',r'\1')中,asd子串会被捕获到组1(由于捕获括号内)和1+数字将被匹配,整个匹配将与被替换\1保持占位符第1组的价值(即asd).