phoneRegex = re.compile(r'''(
        (\+)?   
        (\s)?
        (91)?
        (\s)?
        (\d{5})
        (\s)?
        (\d{5})
        )''', re.VERBOSE)
You are finding the capture groups and joining them in phoneNum
now the capture groups (\+),(\s),(91),(\s),(\d{5}),(\s), and (\d{5}) together make up a phone number.
and the large capture group ( (\+)?    (\s)? (91)? (\s)? (\d{5}) (\s)? (\d{5}) )
also captures the phone number. Hence a phone number is printed twice.
3
solved Automate the Boring Stuff: Phone number and email extractor [closed]