This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: String formatting character for str.join
Type: Stage:
Components: Interpreter Core Versions: Python 2.5
process
Status: closed Resolution: postponed
Dependencies: Superseder:
Assigned To: Nosy List: ncoghlan
Priority: normal Keywords: patch

Created on 2005-09-04 11:40 by ncoghlan, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
format_join.diff ncoghlan, 2005-09-04 11:40 String format character for joining iterables
format_join.2.diff ncoghlan, 2005-09-04 12:26 Fix seg fault when handling generators
Messages (4)
msg48702 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2005-09-04 11:40
Current string formatting doesn't provide an easy way
to say "put the contents of this sequence here, using
this string as the separator".

The only generic way is to use the '%s' formatting
character, and then put "sep.join(map(str, seq))" in
the appropriate place.

This isn't so obvious with lists and tuples, as their
default string representations are usually good enough.
When trying to add debug statements for iterators,
however, the current behaviour is a pain.

This patch adds a '%j' (for 'join) formatting character
that allows a separator string to be specified between
the percent symbol and the format character. For
example, "%'\n'j" would indicate that a newline should
be used to separate items in the supplied iterable.

At this point (initial posting) the patch doesn't
support Unicode objects, and doesn't have any tests or
documentation - it is solely a proof of concept.
msg48703 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2005-09-04 11:53
Logged In: YES 
user_id=1038590

Hmm, looks like this version has a few problems dealing with
generators, so avoid it unless you don't mind the odd seg
fault. . .
msg48704 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2005-09-04 12:26
Logged In: YES 
user_id=1038590

2nd version attached which fixed some problems with handling
generators by cleaning up the reference counting and not
trying to get too fancy when having to convert non-strings.
Tested with the following simple test cases:

$ ./python -c "print '%j' % range(10)"
0123456789
$ ./python -c "print '%j' % (x for x in range(10))"
0123456789
$ ./python -c "print '%j' % (x*x for x in range(10))"
0149162536496481
$ ./python -c "print '%\" \"j' % (x*x for x in range(10))"
0 1 4 9 16 25 36 49 64 81
msg48705 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2005-09-05 12:22
Logged In: YES 
user_id=1038590

'twas a silly idea. I still thinking printing an arbitrary
sequence of non-strings is harder than it should be, but
this isn't the answer.
History
Date User Action Args
2022-04-11 14:56:12adminsetgithub: 42340
2005-09-04 11:40:17ncoghlancreate