我在 Python 3.3 中的一个小程序有问题,它应该从字符串返回一个数字。
虽然它适用于正值,
text = "XXXXXXX\nDateMinEnd=230\nXXXXXXX\n"
Dmin = re.search('(?<=DateMinEnd=)\w+',text)
Dmin_res = int(Dmin.group())
print(Dmin_res)
230
负值的结果为“无”:
text = "XXXXXXX\nDateMinEnd=-230\nXXXXXXX\n"
Dmin = re.search('(?<=DateMinEnd=)\w+',text)
Dmin_res = int(Dmin.group())
'NoneType' object has no attribute 'group'
我真的是一个初学者,所以我会很感激任何提示(当然,在问你之前我已经看过 http://docs.python.org/2/library/re.html 并尝试了原始字符串和几个特殊的转义,但不幸的是我找不到解决方案)。提前致谢。
安德烈亚斯
最佳答案
如果你只需要支持整数,你可以在你的\w
前面添加一个可选的-
:
Dmin = re.search('(?<=DateMinEnd=)-?\w+',text)
此外,\w
也匹配非数字,因此您可能需要使用 \d
(对于 digit):
Dmin = re.search('(?<=DateMinEnd=)-?\d+',text)
编辑
如果您需要支持非整数,请使用以下正则表达式:
Dmin = re.search('(?<=DateMinEnd=)-?\d*\.?\d+',text)
让我们分解一下:
-? # optional negation
\d* # zero or more digits
\.? # optional decimal point (. is special so we need to escape it)
\d+ # one or more digits
关于python - 如何在字符串中查找正值或负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17987521/