问题标签 [f-string]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
350 浏览

python - 如何清理兼容 Python 2.7 + 3 的包以使其仅兼容 Python 3.6?

对于某些项目,我想停止支持 Python 2.7(请参阅http://python3statement.org/)以仅使用 Python > 3.6(或者更确切地说是 3.5 + f-string,如 Pypy v6.0)。

如果尝试将包与没有 f-string 的 Python 版本一起使用,第一步可能是修改 setup.py 文件以获得显式错误。

但是要切换到纯 Python 3.6 语法并删除所有

  • from __future__ import ...,

  • try与 Python 2.7 支持相关,

  • 未来和/或

并在许多地方更换

  • class MyClass(object)->class MyClass:
  • super(MyClass, self)->super()
  • "{}".format(foo)->f"{foo}"

我基本上是手动为代码完成了这项工作(实际上我还通过使用 Python 脚本处理代码来自动化一些步骤),我真的看到了不同之处。代码现在不那么冗长了,全局也变得更好了。

我确信我忘记了许多其他可以做的很好的简化,例如我现在使用了很多from pathlib import Path,但这些更改不那么直接。

您如何将 Python 2.7/3.6 兼容代码转换为干净的 Python 3.6 代码?如何避免手动完成这项无聊的工作?

在第一个答案后编辑

我认为假设的内化(在许多情况下不会附加)不应该阻止我们使用 f-strings,它只是更干净(并且稍微快一点)。

我仍然认为我提到的修改是合理的。

0 投票
0 回答
255 浏览

python - 什么时候可以在 setup.py 脚本中使用来自 python 的后续次要版本更新的功能?

原始问题标题:

我们应该在 setup.py 中使用 python 3.6 功能吗?

我为依赖于 python 3.6 的私有库安装程序创建了 setup.py。我试图让这个文件对任何试图在 python 版本上安装它的人更友好一点,并意识到我的想法有一个重大缺陷。

我在 setup.py 中使用了f-strings ,它只在 >=3.6 中工作

任何试图在以前版本的 python 中运行 setup.py 的人甚至都不会到达检查解释器版本的第一行代码。所以这让我想到了创建 setup.py 文件的指南以及可能存在哪些其他语法限制,这些限制会阻止 setup.py 在多个环境中正常运行。

运行上面的代码会给你这个:

我的问题是

当使用仅限于较新版本的解释器功能时,对 setup.py 有什么建议?


编辑:

3.8.2 现已推出,这让我再次思考这个问题。所以我重新措辞了这个问题。

什么时候可以在 setup.py 脚本中使用来自 python 的后续次要版本更新的功能?

F-strings 是在 3.6 中添加的。什么时候可以在 setup.py 中开始使用它们?两个小版本?三?下一个主要版本?

0 投票
1 回答
10476 浏览

python - 大括号内的 f 字符串公式不起作用

我在 Python 3.7 上。

我在第 3 行的代码工作正常,但是当我将基础公式插入第 4 行时,我的代码返回错误:

SyntaxError: f-string: mismatched '(', '{', or '[' (错误指向第 4 行中的第一个 '('。

我的代码是:

我无法弄清楚第 4 行有什么问题。

0 投票
2 回答
300 浏览

python - 如何在 fstrings 中使用 .loc?

我有一个这样的数据框:

和这样的字典:

字典包含要从数据框中提取的列名和值的索引以生成如下字符串:

因此,每个字符串都以元素本身开头,并在括号中显示索引和列名。

我尝试了以下列表理解:

产生

所以,几乎没问题,只是col1\n0需要避免的部分。

如果我尝试

我明白了

然而,根据需要,与

我明白了

这怎么可能解决?

0 投票
2 回答
950 浏览

python - Python:用 f-string 隐藏 json 空键值

我使用 f-strings 而不是 print改进了我的第一个 Python 程序:

该程序通过 json 文件获取数据以构建科学引文:

它工作得很好,除了(再次)我不知道如何在键没有值时从 return 语句中隐藏键值(即,json 文件中没有针对一个特定引用的这样的键)。

例如,一些科学引文没有“Pubmed”键/值 (pmd)。我不想用空白值打印“Pubmed:”,而是想摆脱它们:

使用 publi 函数中的print语句,我可以编写以下内容:

有谁知道如何使用f-string获得相同的结果?

谢谢你的帮助。

PS:作为一个 python 初学者,我无法解决这个特定问题,只是阅读文章Using f-string with format based on a condition

0 投票
4 回答
394 浏览

python - 如何在 Python 的 print 函数中读取数组的元素?

我只想使用打印功能创建一次以下输出:

为此,我使用以下代码:

但我得到的输出是:

你能帮我做错什么吗?如何在打印函数中调用数组元素?

0 投票
2 回答
10521 浏览

python - 如何使用 f"" 字符串而不是 .format() 打印二进制数?

为了将一些数字打印为二进制格式,我们只需使用该.format()方法,如下所示:

以其他格式(十六进制和八进制)打印也是如此,只需将后面的大括号替换为我们要打印的数字即可。但是有没有办法使用新f""字符串来替换.format()命令?我知道这可能看起来微不足道,但我在使用新功能时遇到了这个问题,此外还f""使代码更短且更具可读性。

0 投票
2 回答
1702 浏览

python - 将 Python f 字符串与 Yaml 文件结合使用?

如果我有一个 yaml 文件,其中包含与 python f-strings 合作使用的带有括号符号 {} 的字符串,那么在这里如何利用 f-string 插值?以这个简单的 yaml 文件为例:

如果x = 'val3',我希望 k2 的值能够反映val2 as well as val3

这可以很容易地用格式字符串来完成......

但是如何对 f-strings 做同样的事情呢?

0 投票
4 回答
528 浏览

python - Python中的“懒惰”列表项评估

由于缺乏更好的词,我用这个标题。

我想要的是能够做这样的事情:

但相反,字符串中的文字表达式在创建列表时被评估一次,并且每次访问它时都会给出相同的结果。

我想知道除了编写一些复杂的边缘案例处理之外是否有更简单/更智能的方法来解决这个问题(毕竟我们是程序员;谁不喜欢编写漂亮的代码并且优雅而花哨?)。我说的是边缘情况处理,因为我的 49 个字符串中只有 6 个需要这种“特殊”行为。

到目前为止,我尝试的是从 randint 调用中创建一个 lambda 函数,但这无济于事;同样的结果。也许这是惰性评估的一个案例,但我需要一些关于如何(或是否?)将它与列表一起使用的指导。

0 投票
3 回答
10800 浏览

python - Python f 字符串格式不适用于 strftime 内联

我遇到了一个我试图理解的奇怪错误。进行一些常规代码清理并将所有字符串格式转换为 f 字符串。这是在 Python 3.6.6 上

此代码不起作用:

但是,这(功能相同)确实有效:

我觉得我可能遗漏了一些明显的东西,并且对第二次迭代很好,但我想了解这里发生了什么。