我很抱歉,因为我来自Perl,对Python还不熟悉。你知道吗
下面的例子在我看来很长:
#!/usr/bin/python
import re
r = re.compile('(?i)m(|[ldf])(\d+)')
m = r.match(text)
if m:
print m.group(2)
例如,在Perl中,它只有一行,而且可读性很强。你知道吗
#!/usr/bin/perl
print $2 if /m(|[ldf])(\d+)/i
如何将Python示例重写得更简单。如果可能的话,可以像Perl一样轻量级。你知道吗
我计划写大量的测试,如果我想让我的代码可读,我想避免消费行,这将不会有助于人们理解我的程序。我想下面这样的内容比我的第一个解决方案更具可读性:
r = R()
if r.exec('(?i)m(|[ldf])(\d+)', text): print r.group(2)
if r.exec('(?i)k(|[rhe])(\d{2})', text): print r.group(2)
不幸的是,在这种情况下,我必须为此编写一个类。你知道吗
Python方法重视清晰而不是简洁,因此通常情况下,事情会比Perl中的更冗长。也就是说,
re.compile
步骤是可选的。你知道吗在Python中,赋值不是表达式;它们不能用作值。因此,无法跳过单独的赋值语句(
m = ...
)或将其与if
组合。如果您想稍后引用match对象,您确实需要一个显式赋值—没有类似于Perl$n
变量的全局隐式状态来自动存储捕获组。你知道吗相关问题 更多 >
编程相关推荐