Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
CamelCase Conversions
#2
Just playing with groupby:

from itertools import groupby

def pepify(_str):
    grouped = groupby(_str, lambda char: char.islower())
    keep = lambda seq: ''.join(seq)
    change = lambda seq: ''.join(['_'] + [*seq]).lower()
    replaced = (change(seq) if case is False else keep(seq) for case, seq in grouped)
    return ''.join(replaced).lstrip('_')

pepify('MyFunctionName') --> 'my_function_name'
EDIT:

PEP8 - Programming recommendations

Quote:Always use a def statement instead of an assignment statement that binds a lambda expression directly to an identifier

So in conformance with PEP8 it should be expressed:

from itertools import groupby

def pepify(_str):
    grouped = groupby(_str, lambda char: char.islower())
    def keep(seq):  return ''.join(seq)
    def change(seq): return ''.join(['_'] + [*seq]).lower()
    replaced = (change(seq) if case is False else keep(seq) for case, seq in grouped)
    return ''.join(replaced).lstrip('_')
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Messages In This Thread
CamelCase Conversions - by Skaperen - Apr-18-2019, 12:57 AM
RE: CamelCase Conversions - by perfringo - Apr-18-2019, 07:58 AM
RE: CamelCase Conversions - by snippsat - Apr-18-2019, 10:01 AM
RE: CamelCase Conversions - by perfringo - Apr-18-2019, 10:12 AM

Forum Jump:

User Panel Messages

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