@@ -436,7 +436,7 @@ def test_replace(self):
436
436
values = klass (data )
437
437
self .assertRaises (TypeError , values .str .replace , 'a' , repl )
438
438
439
- ## GH 15055, callable repl
439
+ ## GH 15055
440
440
values = Series (['fooBAD__barBAD' , NA ])
441
441
442
442
# test with callable
@@ -445,10 +445,20 @@ def test_replace(self):
445
445
exp = Series (['foObaD__baRbaD' , NA ])
446
446
tm .assert_series_equal (result , exp )
447
447
448
- # test with wrong type
449
- repl = lambda m : m .group (0 ).swapcase ()
450
- result = values .str .replace ('[a-z][A-Z]{2}' , repl , n = 2 )
451
- exp = Series (['foObaD__baRbaD' , NA ])
448
+ # test with wrong number of arguments
449
+ repl = lambda m , bad : None
450
+ re_msg = "^<lambda>\(\) missing 1 required positional argument: 'bad'$"
451
+ self .assertRaisesRegex (TypeError , re_msg , values .str .replace , 'a' , repl )
452
+
453
+ repl = lambda : None
454
+ re_msg = '^<lambda>\(\) takes 0 positional arguments but 1 was given$'
455
+ self .assertRaisesRegex (TypeError , re_msg , values .str .replace , 'a' , repl )
456
+
457
+ # test regex named groups
458
+ values = Series (['Foo Bar Baz' , NA ])
459
+ repl = lambda m : m .group ('middle' ).swapcase ()
460
+ result = values .str .replace (r"(?P<first>\w+) (?P<middle>\w+) (?P<last>\w+)" , repl )
461
+ exp = Series (['bAR' , NA ])
452
462
tm .assert_series_equal (result , exp )
453
463
454
464
def test_repeat (self ):
0 commit comments