![]() |
1
12
我认为这不是小事。如果我经常这样编写代码,我不想在代码周围撒上多余的条件。 这有点奇怪,但您可以使用迭代器来实现:
奇怪的是,它使用了一个迭代器来处理一些不重复的事情——它更接近于一个条件,乍一看,它可能会为每个匹配产生多个结果。 上下文管理器不能完全跳过它的托管函数,这似乎很奇怪;虽然这不是“with”的明确用例之一,但它似乎是一个自然的扩展。 |
![]() |
2
4
另一个好的语法是这样的:
|
![]() |
3
1
基于格伦·梅纳德的解决方案,我还有另一种方法:
与格伦的解决方案类似,这一方法可以是0次(如果没有匹配)或1次(如果匹配)。 不需要Sub,结果就不那么整洁了。 |
![]() |
4
0
如果你在一个地方做了很多这样的事情,这里有一个替代的答案:
您可以使用与re相同的线程安全性编译一次regex,为整个函数创建一个可重用的matcher对象,然后非常简洁地使用它。这样做还有一个好处,那就是您可以用明显的方式反转它——要用迭代器实现这一点,您需要传递一个标志来告诉它反转其结果。 但是,如果您只对每个函数进行一次匹配,就没有多大帮助了;您不希望将matcher对象保持在比这更广泛的上下文中;它会导致与blixt解决方案相同的问题。 |
![]() |
5
0
我不认为用
我建议使用类似于Perl语法的语法。把你自己的扩展
正如您在下面的注释中看到的,这个方法既不是范围安全的,也不是线程安全的。只有当您完全确信您的应用程序在将来不会成为多线程的,并且您正在使用的范围中调用的任何函数都将成为多线程的,您才能使用它。 也 使用相同的方法。 |
![]() |
6
0
这看起来不太好看,但你可以从
模仿
如果匹配打印组
流,你可以(ab)使用
当然,您可以定义一个小函数来完成脏工作:
|
![]() |
7
0
不是完美的解决方案,但允许您为同一个str链接多个匹配选项:
|
![]() |
8
0
我的解决方案是:
你可以用多少 否则如果 必要时的条款。 更好的是:
两个 追加 和 更新 返回 没有 . 因此,您必须使用 或 在任何情况下都是不可分割的。 不幸的是,这只在代码位于顶层(即不在函数中)时有效。 |
![]() |
9
0
这就是我要做的:
也就是说,我将一个列表传递给函数以模拟按引用传递。 |
![]() |
Malvineous · 定义编译时间常数的最佳方法 10 年前 |
![]() |
Søren Debois · 执行类型单元表达式的习语iff条件为真 10 年前 |
![]() |
the wolf · 确保矩阵元素长度的“Python”方法 12 年前 |