Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PEP 498 -- Literal String Interpolation #50

Open
danielniccoli opened this issue Dec 13, 2017 · 8 comments
Open

PEP 498 -- Literal String Interpolation #50

danielniccoli opened this issue Dec 13, 2017 · 8 comments

Comments

@danielniccoli
Copy link

Would it be beneficial to add f-strings to this cheat sheet? I hope this is not vastly out the website's focus.

>>> import datetime
>>> name = 'Fred'
>>> age = 50
>>> anniversary = datetime.date(1991, 10, 12)
>>> f'My name is {name}, my age next year is {age+1}, my anniversary is {anniversary:%A, %B %d, %Y}.'
'My name is Fred, my age next year is 51, my anniversary is Saturday, October 12, 1991.'
>>> f'He said his name is {name!r}.'
"He said his name is 'Fred'."
@fepegar
Copy link

fepegar commented Dec 31, 2017

I agree, I came here to open the same issue.

I can give it a try and add some examples to thank the thousand times I've opened the website when I didn't remember how to format().

@lrq3000
Copy link

lrq3000 commented Feb 17, 2018

@fepegar That would be awesome! I do not use f-strings yet so I can't do it myself, but I am sure it will be very useful to have such a recap on this awesome new feature!

@martin-martin
Copy link

I also came here to propose this, but considering that a current task of this page is

All examples on this page work out of the box with with Python 2.7, 3.2, 3.3, 3.4, and 3.5 without requiring any additional libraries.

f-strings don't fit in here, since they are not backward-compatible.


However, I think f-strings are great and Python 3 is too, so IMO it's worth to include them on this really very helpful page : )

@xmo-odoo
Copy link

f-strings don't fit in here, since they are not backward-compatible.

OTOH there are suggestions to add notes about format_map in other issues and @ulope seems broadly favorable, so the backwards compatibility bit could probably be dropped. Not to mention people seem to be using pyformat as a one-stop shop for formatting, (I certainly do).

Incidentally, either this or #24 should be closed.

@MatthijsBlom
Copy link

Incidentally, either this or #24 should be closed.

#24 is limited to contributors.

I want to help. What can I do?

Simply adding or translating examples would be easy. However, it appears to me there is more to be done. For starters, how to present the coexistence of .format() and f"{}"? And how to approach the exclusivity of f"{}" to Python 3.6+?

@danielniccoli
Copy link
Author

@martin-martin I don't share your opinion and I don't see a reason why f-strings don't belong here as they are used to format strings.

The examples on this page work out of the box without requiring any additional libraries. If not tagged with a version, the examples work with Python 2.7, 3.2, 3.3, 3.4, and 3.5.

@ulope
Copy link
Owner

ulope commented Jun 18, 2019

Hey everyone,

thanks for being so interested in the continued evolving of the page :)

Just to weigh in here why it's taking so long to get a new updated version (with f-strings) out:
The 'problems' are basically exactly what @MatthijsBlom mentioned.

Almost all current examples use literals (e.g. "{:02d}".format(1)). For f-strings that would become "{1:02d}". That's not very easy to parse visually and also not at all a typical use case. With more complex examples it would get even worse. Since I want this page to remain very easy to understand I've opted to rather keep it as is until I find a good solution.
Of course one 'simple' solution could be to just assign a dummy variable for every f-string example, but that feels pretty clunky and would take up additional screen space.

Also there is currently no good place to explain the syntactic differences between .format and f-strings.

For all those reasons I've come to the conclusion that the current structure needs an overhaul in order to support those additions.

I really hope I'll find some time over the summer to work on this.

@The-Compiler
Copy link

Shameless plug - a few days ago, I launched a new site instead, fstring.help (repo). It focuses solely on f-strings (thus avoiding the issues regarding the current structure). Much of the content is based on pyformat.info (with proper credit, I hope - thanks @ulope, @zerok and others!). I indeed ended up adding some variables to make the f-strings more readable. IMHO that works out fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants