我正在寻找从下面的字符串中抓取值。源是本地文本文件。什么是最简单/最简单的解决方案。假设编程知识最少:)
<set label=\'Mon+Sep+10\' value=\'48644.54\'/><set label=\'Tue+Sep+11\' value=\'47912.02\'/><set label=\'Wed+Sep+12\' value=\'52219.28\'/><set label=\'Thu+Sep+13\' value=\'49854.88\'/>
我正在寻找从下面的字符串中抓取值。源是本地文本文件。什么是最简单/最简单的解决方案。假设编程知识最少:)
<set label=\'Mon+Sep+10\' value=\'48644.54\'/><set label=\'Tue+Sep+11\' value=\'47912.02\'/><set label=\'Wed+Sep+12\' value=\'52219.28\'/><set label=\'Thu+Sep+13\' value=\'49854.88\'/>
这应该让您对要遵循的程序有所了解:
# Open the local file
fo = open(file-name)
# read the file - this assumes it is the first line
line = fo.readline()
# close the file
fo.close()
# Use a regular expression to find the specific groups
import re
mos = re.finditer(r"value=\\'([\d.]+)\\'", line)
for m in mos:
print m.group(1)
给出:
48644.54
47912.02
52219.28
49854.88
mos
返回的 by使re.finditer
我们能够遍历match
对象,这就是for
循环正在做的事情。match
对象中感兴趣的方法(函数)是group()
,它返回每个括号组中的数据,数据在 中匹配( )
。
您是否想要这种形式的循环取决于您以后要对数据做什么。
正则表达式分解如下:
r" "
始终使用带有正则表达式 的原始字符串,这样更安全
value=\\' \\'
请注意,需要两个\ 字符。一个 \ 是一个特殊字符,但是添加一个额外的 \ 会删除它的特殊含义。
([\d.]+)
括号将匹配此模式的数据分组。意思是“[\d.]+
一个或多个数字(数字)或点”。