0

Is it possible to sort a list of strings using regex. I have a list of strings that look like the following and i would like to sort them by the version number...

_(v\d+)_

Current list

main_cam_v005_01
main_cam_v001_1001
main_cam_v008_1000
main_cam_v003_305
main_cam_v007_1007

Desired list

main_cam_v001_1001
main_cam_v003_305
main_cam_v005_01
main_cam_v007_1007
main_cam_v008_1000
JokerMartini
  • 5,674
  • 9
  • 83
  • 193
  • 1
    Does this answer your question? [Sort a list of strings based on regular expression match or something similar](https://stackoverflow.com/questions/1082413/sort-a-list-of-strings-based-on-regular-expression-match-or-something-similar) – tomgalpin Feb 28 '20 at 15:33

1 Answers1

1
>>> import re
>>> data = ['main_cam_v005_01',
            'main_cam_v001_1001',
            'main_cam_v008_1000',
            'main_cam_v003_305',
            'main_cam_v007_1007']
>>> sorted(data, key=lambda i: int(re.match(r'main_cam_v(\d+)_\d+', i).group(1)))
['main_cam_v001_1001',
 'main_cam_v003_305',
 'main_cam_v005_01',
 'main_cam_v007_1007',
 'main_cam_v008_1000']
Cory Kramer
  • 114,268
  • 16
  • 167
  • 218