正则表达式返回<\u s而不是十进制值

2024-09-30 20:35:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python和regex来尝试搜索文本。给定文本文件中的字符串:

line = (<layerThickness> 0.58 </layerThickness>)

我试图将0.58赋给变量L,但是输出始终是“<;\u s”,而不是十进制值。这就是我一直在尝试的:

L = re.search(r"([-+]?[0-9]*\.?[0-9]+)", line)

感谢您的帮助!你知道吗


Tags: 字符串文本ltresearchlineregex文本文件
3条回答

也许您只需要调用.group()方法:

import re
line = '(<layerThickness> 0.58 </layerThickness>)'
L = re.search(r"([-+]?[0-9]*\.?[0-9]+)", line).group(0)
print(L)

收益率

0.58

为什么,这是正确的!我看到的是:

>>> import re
>>> line = '(<layerThickness> 0.58 </layerThickness>)'
>>> L = re.search(r"([-+]?[0-9]*\.?[0-9]+)", line)
>>> L.group()
'0.58'

你的正则表达式很好,你只是没有意识到检索,如果找到匹配项,则返回重新匹配对象。那是因为重新匹配对象不一定只有一个组。你需要使用重新匹配组或者重新匹配组方法返回正则表达式查找的组的实际值。你知道吗

>>> line = '(<layerThickness> 0.58 </layerThickness>)'
>>> L = re.search(r"([-+]?[0-9]*\.?[0-9]+)", line)
>>> print L
_sre.SRE_Match object at 0x100499dc8>
>>> print L.group()
0.58

请注意,顺便说一句,组仍然是一个字符串,而不是整数/浮点数,您仍然需要将其转换为整数/浮点数才能在数学中使用它。你知道吗

另外请注意,如果您的行中根本不包含匹配项,那么L可能是None,因此您需要在生产代码中测试它。你知道吗

相关问题 更多 >