Extract and sort all numbers that appear after ',

I am currently learning Python and I wrote the following code.
The code searches the string for all digits that appear after ',, sorts them and joins them into a string.
I have a strong feeling that it can be shortened... Can anyone suggest how?

s = "'bhhd',12 'kjubk',2 'bjki',98 'khjbjj',4"
res = re.findall(r"(',)(\d+)", s)
all = []
for r in res:
all.append(r[1])

print(",".join(sorted(all, key=int)))


re.findall() behaves differently depending on whether the regex contains capturing parentheses. If it doesn't contain capturing parentheses, then it just returns the matching text as a flat list.

So, how can you avoid capturing? Just rewrite your regex to use a positive lookbehind assertion.

s = "'bhhd',12 'kjubk',2 'bjki',98 'khjbjj',4"
all = re.findall(r"(?<=',)\d+", s)
print(",".join(sorted(all, key=int)))

• thanks - I thought of that this morning! I am understanding that otherwise (i.e. if I wanted both captures), the way I wrote it is as they say the 'pythonic' way ...? Nov 17, 2017 at 17:54
• If you want to capture, then you should use a list comprehension to build all. Nov 17, 2017 at 18:25
• thanks! I thought that would be the direction but I wasnt sure how. I think I figured it out - the following code works, did I write it well? Let me know, thanks, David. all = [r[1] for r in re.findall(r"(',)(\d+)"] Nov 19, 2017 at 1:06
• That's fine. re.finditer() might be slightly better in that case. Nov 19, 2017 at 1:46
• Ok, thanks. I got that to work but I am not sure why that might be any better... Can you explain? Thanks! Nov 20, 2017 at 0:06