我正在尝试使用 pythons 正则表达式提取数字值(100.00 和 200.00),但是当我调用代码时它没有产生任何结果......我使用的是 python 版本 2.7
1)我的文件名是“file100”,我需要从中选择值..
# cat file100
Hi this doller 100.00
Hi this is doller 200.00
Run Code Online (Sandbox Code Playgroud)
2)这是我的python代码..
# cat count100.py
#!/usr/bin/python
import re
file = open('file100', 'r')
for digit in file.readlines():
myre=re.match('\s\d*\.\d{2}', digit)
if myre:
print myre.group(1)
Run Code Online (Sandbox Code Playgroud)
3)当我运行这段代码时,它没有产生任何东西,没有错误..没有..
# python count100.py
Run Code Online (Sandbox Code Playgroud)
使用re.search代替:
import re
file = open('file.txt', 'r')
for digit in file.readlines():
myre = re.search(r'\s\b(\d*\.\d{2})\b', digit)
if myre:
print myre.group(1)
Run Code Online (Sandbox Code Playgroud)
结果
100.00
200.00
Run Code Online (Sandbox Code Playgroud)
从文档中:
扫描字符串,查找正则表达式模式产生匹配的第一个位置
如果您决定使用组,还需要括号:
(...) 匹配括号内的任何正则表达式,并指示组的开始和结束;执行匹配后可以检索组的内容,并且可以稍后在字符串中使用 \number 特殊序列进行匹配,如下所述。要匹配文字“(”或“)”,请使用 ( 或 ),或将它们括在字符类中:[(] [)]。
re.match仅有效:
如果字符串开头的零个或多个字符与正则表达式模式匹配
rregex作为原始字符串括起来:
字符串文字可以选择以字母“r”或“R”为前缀;此类字符串称为原始字符串,并使用不同的规则来解释反斜杠转义序列。
...
除非存在“r”或“R”前缀,否则字符串中的转义序列将根据与标准 C 使用的规则类似的规则进行解释