@@ -431,16 +431,6 @@ def test_replace(self):
431
431
values = klass (data )
432
432
pytest .raises (TypeError , values .str .replace , 'a' , repl )
433
433
434
- # GH16808 literal replace (regex=False vs regex=True)
435
- values = Series (['f.o' , 'foo' , NA ])
436
- exp = Series (['bao' , 'bao' , NA ])
437
- result = values .str .replace ('f.' , 'ba' )
438
- tm .assert_series_equal (result , exp )
439
-
440
- exp = Series (['bao' , 'foo' , NA ])
441
- result = values .str .replace ('f.' , 'ba' , regex = False )
442
- tm .assert_series_equal (result , exp )
443
-
444
434
def test_replace_callable (self ):
445
435
# GH 15055
446
436
values = Series (['fooBAD__barBAD' , NA ])
@@ -451,8 +441,6 @@ def test_replace_callable(self):
451
441
exp = Series (['foObaD__baRbaD' , NA ])
452
442
tm .assert_series_equal (result , exp )
453
443
454
- pytest .raises (ValueError , values .str .replace , 'abc' , repl , regex = False )
455
-
456
444
# test with wrong number of arguments, raising an error
457
445
if compat .PY2 :
458
446
p_err = r'takes (no|(exactly|at (least|most)) ?\d+) arguments?'
@@ -534,8 +522,6 @@ def test_replace_compiled_regex(self):
534
522
"case and flags cannot be" ):
535
523
result = values .str .replace (pat , '' , case = True )
536
524
537
- pytest .raises (ValueError , values .str .replace , pat , '' , regex = False )
538
-
539
525
# test with callable
540
526
values = Series (['fooBAD__barBAD' , NA ])
541
527
repl = lambda m : m .group (0 ).swapcase ()
@@ -544,6 +530,24 @@ def test_replace_compiled_regex(self):
544
530
exp = Series (['foObaD__baRbaD' , NA ])
545
531
tm .assert_series_equal (result , exp )
546
532
533
+ def test_replace_literal (self ):
534
+ # GH16808 literal replace (regex=False vs regex=True)
535
+ values = Series (['f.o' , 'foo' , NA ])
536
+ exp = Series (['bao' , 'bao' , NA ])
537
+ result = values .str .replace ('f.' , 'ba' )
538
+ tm .assert_series_equal (result , exp )
539
+
540
+ exp = Series (['bao' , 'foo' , NA ])
541
+ result = values .str .replace ('f.' , 'ba' , regex = False )
542
+ tm .assert_series_equal (result , exp )
543
+
544
+ # Cannot do a literal replace if given a callable repl or compiled pattern
545
+ callable_repl = lambda m : m .group (0 ).swapcase ()
546
+ compiled_pat = re .compile ('[a-z][A-Z]{2}' )
547
+
548
+ pytest .raises (ValueError , values .str .replace , 'abc' , callable_repl , regex = False )
549
+ pytest .raises (ValueError , values .str .replace , compiled_pat , '' , regex = False )
550
+
547
551
def test_repeat (self ):
548
552
values = Series (['a' , 'b' , NA , 'c' , NA , 'd' ])
549
553
0 commit comments