我有以下两种不同的刮取数据:
txt = '''Käuferprovision: 3 % zzgl. gesetzl. MwSt.''' # variation 1
及
txt = '''Käuferprovision: Die Courtage i.H.v. % 3,57 inkl. MwSt. ist''' # variation 2
我想创建一个正则表达式,以浮点数的形式获取百分比,因此在第一个例子中是3.0,在第二个例子中是3.57
到目前为止,我已经试过了:
m = re.search(r'.{3}.%.{5}',txt)
txt = m.group().split("%")[1:]
txt = ("".join(txt)).replace(",",".")
print(txt)
它适用于变量2,但不适用于变量1
还有一种方法-使用PyPi
regex
的分支重置:产生
见a demo on regex101.com
如果你想彻底疯掉,可以使用一个子程序和进行分支重置(无可否认,这太过分了):
见另一个demo on regex101.com
您可以使用2个捕获组的替代方案,并检查存在哪个组
见a regex demo
模式匹配:
\b
单词边界(\d+(?:\,\d+)?)\s*%
捕获组1-将数字与可选的十进制、可选的空白字符和%
匹配|
或%\s*(\d+(?:\,\d+)?)
捕获第2组-\b
单词边界-与第1组相反\b
单词边界比如说
输出
如果百分号之间的空格是固定的,您还可以使用lookarounds仅获取不带组的匹配
另见regex demo
范例
输出
您可以尝试使用以下代码获取百分比值并将其转换为
float
:RegEx Demo
Online Code Demo
相关问题 更多 >
编程相关推荐