Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Sorting List
#10
Of course Dead_EyE obviously knows a lot more about this than EyE, sorry I.
Sitting on the train from Shanghai, I came up with this!
I just wanted to cater for input strings which are maybe not uniform. Then I think you need re.
Still, names with non-word characters will cause trouble.

import re

mylist1 = ['Finley : 10', 'Evie : 0', 'P1 : 0', 'P2 : 5', 'P1 : 0', 'P2 : 5', 'Finley : 15', 'Evie : 5']
mylist2 = ['Finley,10', 'Evie,0', 'P1,0', 'P2,5', 'P1,0', 'P2,5', 'Finley,15', 'Evie,5']
mylist3 = ['Fin#1ley#1,10', 'Ev@ie,0', 'P&1,0', 'P&2,5', 'P*1,0', 'P$2,5', 'Finle-y,15', 'Evi!e,5']

# as long as the name is at the start of the string and the number at the end
# and name and number are separated by a non-word character, this should find them.

# finds a word at the beginning of the string using ^
# stops at the first non-word character
pattern1 = re.compile(r'^\w+')
# matches numbers at the end of the string using $
pattern2 = re.compile(r'\d+$')

# having found them, can't be too hard to sort them!


for m in mylist1:
    print('string is', m)    
    match1 = re.search(pattern1, m)
    start = match1.span()[0]
    stop = match1.span()[1] + 1
    name = m[start:stop]
    print('Name is', name)
    match2 = re.search(pattern2, m)
    start = match2.span()[0]
    stop = match2.span()[1] + 1
    score = m[start:stop]
    print('Score is', score, '\n\n')

for m in mylist2:
    print('string is', m)    
    match1 = re.search(pattern1, m)
    start = match1.span()[0]
    stop = match1.span()[1] + 1
    name = m[start:stop]
    print('Name is', name)
    match2 = re.search(pattern2, m)
    start = match2.span()[0]
    stop = match2.span()[1] + 1
    score = m[start:stop]
    print('Score is', score, '\n\n') 

for m in mylist3:
    print('string is', m)    
    match1 = re.search(pattern1, m)
    start = match1.span()[0]
    stop = match1.span()[1] + 1
    name = m[start:stop]
    print('Name is', name)
    match2 = re.search(pattern2, m)
    start = match2.span()[0]
    stop = match2.span()[1] + 1
    score = m[start:stop]
    print('Score is', score, '\n\n') 
Reply


Messages In This Thread
Sorting List - by finndude - Jan-25-2022, 05:01 PM
RE: Sorting List - by ndc85430 - Jan-25-2022, 05:57 PM
RE: Sorting List - by deanhystad - Jan-25-2022, 06:23 PM
RE: Sorting List - by Frankduc - Jan-25-2022, 06:49 PM
RE: Sorting List - by deanhystad - Jan-25-2022, 07:06 PM
RE: Sorting List - by Frankduc - Jan-25-2022, 07:13 PM
RE: Sorting List - by ndc85430 - Jan-26-2022, 06:53 AM
RE: Sorting List - by Pedroski55 - Jan-26-2022, 11:40 PM
RE: Sorting List - by DeaD_EyE - Jan-27-2022, 12:29 PM
RE: Sorting List - by Pedroski55 - Jan-27-2022, 09:37 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  List Sorting Problem ZZTurn 5 1,510 Sep-22-2022, 11:23 PM
Last Post: ZZTurn
  sorting a list of lists by an element leapcfm 3 2,051 Sep-10-2021, 03:33 PM
Last Post: leapcfm
  Sorting list of names using a lambda (PyBite #5) Drone4four 2 2,868 Oct-16-2020, 07:30 PM
Last Post: ndc85430
  list sorting question DPaul 5 3,008 Jun-17-2020, 02:23 PM
Last Post: ndc85430
  sorting list of lists pframe 5 34,194 Apr-17-2020, 09:31 PM
Last Post: Larz60+
  sorting list arian29 2 2,237 Feb-02-2020, 10:31 AM
Last Post: ndc85430
  Converting parts of a list to int for sorting menator01 2 2,359 Nov-03-2019, 03:00 PM
Last Post: menator01
  Sorting a copied list is also sorting the original list ? SN_YAZER 3 3,326 Apr-11-2019, 05:10 PM
Last Post: SN_YAZER
  sorting a list of tuples based on date bluefrog 2 5,938 Aug-10-2018, 02:31 AM
Last Post: ichabod801
  Sorting list of lists with string and int Otbredbaron 6 4,472 May-07-2018, 06:04 AM
Last Post: buran

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020