使用正则表达式的问题

时间:2015-08-15 14:48:47

标签: python python-3.x

我试图在python中运行以下代码。

import re
text = 'Hello 16 Hello 22 Hello 81 Hello 50'
sum = 0
for m in re.finditer('Hello', text):
  print('found', m.start(), m.end())
  a = m.end()
  b = m.end()+3
  print (text[a:b])
  block = str(text[a:b])
  sum += block
  print (sum)

我不断收到此错误:

TypeError: unsupported operand type(s) for +=: 'int' and 'str'

我想做的就是让我的代码在文本中解析并将其中包含的指定数字加在一起。

有谁知道我做错了什么?

由于

3 个答案:

答案 0 :(得分:2)

您无法在str中向int添加sum += block。您应该先将block转换为int。更改行:

 block = str(text[a:b])

为:

 block = int(text[a:b])

答案 1 :(得分:0)

您的总和为int,并且您正在尝试向其添加str。我想你的意思是

  block = int(text[a:b])

答案 2 :(得分:0)

也许我已经理解了错误,但要在字符串中找到一些数字,您可以使用r'\d+'。 此代码将汇总字符串中的所有数字:

sum(int(i) for i  in re.findall(r'\d+', 'Hello, 7, 89 Vlad'))