gpt4 book ai didi

python - 海象运算符,多项任务

转载 作者:行者123 更新时间:2023-12-03 08:24:35 25 4
gpt4 key购买 nike

我有以下 while 循环:

import re
line = "This is my line"
reg = re.compile('(\S+)\s*(.*)')
while line:
token, line = reg.match(line).groups()
print (token)

是否可以将其放入海象运算符表达式中?看来not natively ,但我想知道是否可以通过某种黑客方式来完成,也许可以使用多个 := 。理想情况下,应该是这样的:

while (token, line := reg.match(line).groups()):
print (token)

这可能吗?

最佳答案

我认为你能做的最接近的事情是这样的:

while r := reg.match(line).groups() and (token := r[0], line := r[1]) and line:
print(token)

但是你为什么要这样做呢?这是糟糕的代码。不要这样做。您问题中的原始代码更好。

也就是说,您的标记看起来像是由空格分隔的非空白字符组 - 请注意,即使 \s* 可能不匹配空格,但这只会发生在结尾处输入,因为 \S+ 贪婪地匹配尽可能多的非空白字符。如果这确实是您想要做的,那么您应该这样写:

for token in line.split():
print(token)

或者,如果您坚持使用正则表达式,您应该这样写:

reg = re.compile(r'\S+')

for token in reg.findall(line):
print(token)

关于python - 海象运算符,多项任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66937923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com