标签: f-string

F 字符串自动完成 python

在 Python 3 中为 Atom 使用 f 字符串时,它不会正确自动完成字符串。正在输入

types_of_people = 10
x = f"There are {types_of_people} types_of_people."
Run Code Online (Sandbox Code Playgroud)

x = f"...当我开始输入但结束引用不会自动完成时,我得到了

当我输入结束语时,我得到x = f"There are {types_of_people} types_of_people."""

如何让最终报价根据需要自动完成?

我去了这个链接。但是当我输入结束引号时,atom 仍然会打印附加引号,而不是仅仅给出结束引号。

原子.io网站

python python-3.x atom-editor f-string

4
推荐指数
1
解决办法
1056
查看次数

将 f 字符串与要在正则表达式中使用的原始字符串组合会产生 SyntaxError;ValueError 或错误结果

我这里有一个字符串:

s0 = 'Ready1   Origin1                 Destination1             Type1       Rate1      Phone1 #     Pro1 #'
Run Code Online (Sandbox Code Playgroud)

以下变量的计算如下:

is_head = len([i.group() for i in re.finditer(r"(\s+){2,}", s0)]) >= 3
Run Code Online (Sandbox Code Playgroud)

这给了我True对我来说正确且预期的结果。现在我有另一个变量cont_,它可能包含 到 之间的任何26。我想根据 的值将正则表达式从 更改r"(\s+){2,}"为。我想获取变量而不为每种情况声明单独的正则表达式。为此,我需要使用 f 字符串以及当前用于正则表达式检查的原始字符串。我已经尝试过这些:r"(\s+){6,}"cont_is_head

>>> len([i.group() for i in re.finditer(fr"(\s+){{cont_},}", s0)]) >= 3
  File "<stdin>", line 1
SyntaxError: f-string: single '}' is not allowed
>>> len([i.group() for i in re.finditer(rf"(\s+){{cont_},}", s0)]) >= 3
  File "<stdin>", line 1
SyntaxError: f-string: single '}' …
Run Code Online (Sandbox Code Playgroud)

python regex python-3.x f-string python-3.7

4
推荐指数
1
解决办法
2701
查看次数

Python3 f 字符串:如何避免转义文字大括号?

有没有办法避免在 python3 中转义大括号字符f-string

例如,如果你想输出一个 json 字符串或一段 CSS 规则,那么如果你想使用 f 字符串语法,必须将所有{}字符转换为{{和,这确实很不方便。}}

我知道可以使用eg或字符串模板的旧语法div {color: %s} % color'text {}'.format(abc)我想知道是否有一种方法可以在原始文本上使用f字符串,最好是通过一种方法来标记“原始”的开头和结尾带有某种分隔符的块,例如类似于在 java 正则表达式中使用and的方式,以便在正则表达式中包含未转义的原始字符。\Q\E

作为替代方案,标准库中是否有某些东西允许获取一大块原始文本并将其转换为f 字符串安全格式?(同样,类似于如何将Pattern.quote用于 java 正则表达式)

escaping python-3.x f-string

4
推荐指数
1
解决办法
2310
查看次数

f"{expr=}" 是一个新的 f 字符串表达式吗(请参阅训练大括号之前的等号)?从哪个版本的 python 开始?

我收到了一个 python 笔记本,其中充满了f"{expr=}"在我的环境中产生错误消息的表达式:

var=7

print(f"{var=}")

  File "<fstring>", line 1
    (var=)
        ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我怀疑/期望它实际上可能是 的新语法f"expr={expr}",即如以下打印语句所示:

print(f"var={var}")

var=7
Run Code Online (Sandbox Code Playgroud)

事实上,我经常使用后者这样的表达式进行调试,如果有一个它的简写就更好了。

那是比我的(3.7.6)更高版本的Python吗?还是fstring模块的定制? 在网络或 SE 中搜索它并没有什么成效。

如果它不是标准功能,我怎样才能让它工作?

python debugging f-string

4
推荐指数
1
解决办法
3589
查看次数

带有可变十进制数说明符的 Python f 字符串

是否可以将 Python f 字符串与可变十进制数字说明符一起使用?这是一个示例,但它不起作用:

print(f'{1.23456:.2f}')    # working f-string code

number = 2
print(f'{1.23456:.' + number + 'f}')
Run Code Online (Sandbox Code Playgroud)

Python3.7。

python string python-3.x f-string

4
推荐指数
1
解决办法
181
查看次数

如何在 python f 字符串中动态填充数字?

我有一个像这样的 f 字符串:

f"foo-{i:03d}"
Run Code Online (Sandbox Code Playgroud)

这会为我读入的文件生成一个文件名。问题是有时有数百个文件,因此文件的名称类似于 foo-001、foo-002 等,但其他时候有数千个,因此文件的名称为 foo-001、foo-002 等。需要 foo-0001 和 04d。有没有办法可以动态地做到这一点?例如,如果我将文件总数作为变量 n,那么我可以这样做:

pad = len(str(n))
Run Code Online (Sandbox Code Playgroud)

但是我该如何在 f 字符串中使用该 pad 变量呢?

python f-string

4
推荐指数
1
解决办法
1838
查看次数

f 字符串中的空格导致 ValueError:格式说明符无效

我和一位同事刚刚使用 f 字符串偶然发现了一个有趣的问题。这是一个最小的例子:

>>> f"{ 42:x}"
'2a'
Run Code Online (Sandbox Code Playgroud)

在十六进制类型后面写入空格会导致ValueError

>>> f"{ 42:x }"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid format specifier
Run Code Online (Sandbox Code Playgroud)

我理解PEP 498 中忽略表达式中的前导和尾随空白段落意味着该空格实际上应该被忽略。

为什么空格字符会导致错误,其背后的原因是什么?

python python-3.x f-string

4
推荐指数
1
解决办法
2476
查看次数

为什么不能在f字符串中使用反斜杠?

在Python> = 3.6中,f-strings可以用作方法的替代品str.format.举个简单的例子,它们是等价的:

'{} {}'.format(2+2, "hey")
f'{2+2} {"hey"}'
Run Code Online (Sandbox Code Playgroud)

忽略格式说明符,我基本上可以str.format在f字符串中移动内部大括号的位置参数.请特别注意,我可以将str文字放在这里,虽然看起来有点笨拙.

但是有一些限制.具体来说,任何形状或形式的反斜杠都不允许在f字符串的大括号内:

'{}'.format("new\nline")  # legal
f'{"new\nline"}'          # illegal
f'{"\\"}'                 # illegal
Run Code Online (Sandbox Code Playgroud)

\如果它在支架内,我甚至不能用它来分开一条长线;

f'{2+\
2}'     # illegal
Run Code Online (Sandbox Code Playgroud)

即使\在正常情况下完全允许这种用法str;

'{\
}'.format(2+2)  # legal
Run Code Online (Sandbox Code Playgroud)

在我看来,如果它\在f字符串的大括号内完全看到字符,则会将硬停止编码到解析器中.为什么要实施此限制?虽然文档指定了这种行为,但它并不能证明原因.

python string-formatting backslash python-3.x f-string

3
推荐指数
3
解决办法
1255
查看次数

是否可以像使用字符串和格式一样重用f字符串?

我想创建一个f字符串,它可以与以下代码一起多次使用format

TEXT_AMOUNT = 'text {amount}'


def f1(beginning):
    return beginning + TEXT_AMOUNT.format(amount=10)


def f2(ending):
    return TEXT_AMOUNT.format(amount=100) + ending
Run Code Online (Sandbox Code Playgroud)

如何使用f字符串实现相同的功能?我试过了:

TEXT_AMOUNT = f'text {amount}'


def f1(beginning):
    amount = 100
    return beginning + TEXT_AMOUNT


def f2(ending):
    amount = 10
    return TEXT_AMOUNT + ending
Run Code Online (Sandbox Code Playgroud)

但是,出现以下错误:

NameError: name 'amount' is not defined
Run Code Online (Sandbox Code Playgroud)

python python-3.x f-string

3
推荐指数
3
解决办法
1233
查看次数

如何将f字符串与变量一起使用,而不是与字符串文字一起使用?

我想将f-string与我的string变量一起使用,而不是与使用字符串常量定义的string一起使用"..."

这是我的代码

name=["deep","mahesh","nirbhay"]
user_input = r"certi_{element}" # this string i ask from user  

for element in name:
    print(f"{user_input}")
Run Code Online (Sandbox Code Playgroud)

此代码提供输出:

certi_{element}
certi_{element}
certi_{element}
Run Code Online (Sandbox Code Playgroud)

但我想要:

certi_{deep}
certi_{mahesh}
certi_{nirbhay}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python string string-formatting python-3.x f-string

3
推荐指数
3
解决办法
4024
查看次数