【发布时间】:2018-07-08 18:24:46
【问题描述】:
我写了一个代码
import re
inp=input("Please enter the file name ")
if len(inp)<1: inp = 'regex_sum_109744.txt'
fh=open(inp,'r')
sum=c=0
for i in fh:
i=i.rstrip()
s=re.findall('[0-9]+',i)
for j in s:
try:
u=float(s[c])
except:
#print("the thing is",j)
continue
sum=sum+u
#print("**********","the number is ",u,"the sum is ",sum,"************")
c=c+1
c=0
print(sum)
但是当我将 [0-9] 更改为 [0-9.] 时,输出开始拒绝整数
谁能解释一下为什么会这样?
【问题讨论】:
-
注意
[0-9.]+将匹配 1+ 个数字和点。 -
s[c]是什么...?这个u=float(s[c])应该是u=float(j)而c已经过时了 -
如果取消注释
except块中的print行,哪些字符串会导致异常?匹配所有数字和点将匹配一些非数字值,例如点本身(可能是文本中的句点,而不是小数点)。 -
使用
(?:\d+(?:\.\d*)?|\.\d+) -
当我使用 [0-9.]+ 时,如您所见,我在 except 块中放置了一个打印语句以查看将被拒绝的内容,程序也拒绝整数和点。
标签: python regex python-3.x