python - 难以理解如何正确地将 Perl 匹配转换为 Python
问题描述
我有一个 Perl 示例,当我在 Python 中尝试相同的任务时,它看起来异常混乱且效率低下。能更好地掌握 Python 工作原理的人可以评论如何简化 python 片段,使其在简单性和编码绒毛方面更类似于 Perl 示例吗?这两个片段(Perl 和 Python)都会产生相同的结果。重点是测试然后提取括号内的正则表达式。Python 案例似乎需要对正则表达式进行两次处理。
#Perl Example:
elsif ($teststring =~ m/^([0-9\.]+)[Xx]$/)
{
$ExtractedVa = $1;
}
#Python Example of how to implement the perl functionality above:
elif (re.search(r"^([0-9\.]+)[Xx]$",teststring)):
parts=re.search(r"^([0-9\.]+)[Xx]$",teststring)
ExtractedVa=float(parts.group(1)) # Convert from string to numeric
解决方案
如果您使用 Python 3.8 或更高版本,
elif parts := re.search(....., teststring):
如果你没有达到 3.8,那么你只需做两个陈述:
else:
parts = re.search(....., teststring)
if parts:
但是你必须进一步缩进else
.
“海象”运算符:=
被添加到 Python 中就是为了做这种事情。
== 已编辑。==
我不小心:=
在 3.8 代码和 <3.8 代码中都使用了。后者应该是正常的赋值运算符'='
推荐阅读
- android - 滚动视图后,回收站视图中的适配器重复图像。科特林
- django - 序列化程序抱怨没有属性'_meta'
- c# - 循环遍历不同类型的控件并创建用于复制的字符串生成器
- sql-server - SSIS循环迭代包帮助
- python - python numpy 或 pandas 对象中的字符串连接操作
- core-data - NavigationLinks 正在分组
- css - reactJS中的表格css问题
- sql - SQL 按每个 PolicyId 的日期获取前 2 行,但日期不同
- validation - 当相同的数据集作为 keras 中的训练和验证数据集传递时,训练损失下降,但验证损失波动很大
- javascript - React Native - 模拟器 - Hermes 库崩溃 - 找不到要加载的 DSO:libhermes.so