Current code:
defindent(text, prefix, predicate=None):
"""Adds 'prefix' to the beginning of selected lines in 'text'. If 'predicate' is provided, 'prefix' will only be added to the lines where 'predicate(line)' is True. If 'predicate' is not provided, it will default to adding 'prefix' to all non-empty lines that do not consist solely of whitespace characters. """ifpredicateisNone:
defpredicate(line):
returnline.strip()
defprefixed_lines():
forlineintext.splitlines(True):
yield (prefix+lineifpredicate(line) elseline)
return''.join(prefixed_lines())
predicate = str.strip is faster than def predicate(line)''.join(x) converts input iterable to sequence. Using generator just makes overhead.- creating temporary
prefix + line is avoidable.
Linked PRs
Current code:
predicate = str.stripis faster thandef predicate(line)''.join(x)converts input iterable to sequence. Using generator just makes overhead.prefix + lineis avoidable.Linked PRs
textwrap.indent()#131923