This part
([\w .])
only matches a single character.
It should be
([\w .]*)
to match the full name part after the comma.
import re
def rearrange_name(name):
result = re.search(r"^([\w .]*), ([\w .]*)$", name)
if result is None:
return name
return f"{result.group(2)} {result.group(1)}"
name = "Lovelace, Ada"
print(rearrange_name(name))
Output:
Ada Lovelace
import unittest
from re_name import rearrange_name
class TestRearrange(unittest.TestCase):
def test_basic(self):
testcase = "Lovelace, Ada"
expected = "Ada Lovelace"
self.assertEqual(rearrange_name(testcase), expected)
if __name__ == '__main__':
unittest.main()
Output:
λ python test_names.py
Ada Lovelace
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Also depend on the task this may be ok,or you may need to do to more testes.
As names also can contain apostrophes or hyphens.
testcase = "O'Neill, Eugene"
expected = "Eugene O'Neill"