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"