Regex 使用正则表达式仅匹配百分比中的数字

Regex 使用正则表达式仅匹配百分比中的数字,regex,Regex,有一个数据帧,一些单元格包含百分比,进一步看每个单元格类似于“\u200b68%”、“\u200b.75%”、“\u200b3.4%”。只想把数字匹配出来。 尝试了re.findall(“(\d*(\.\d+)”,“\u200b.75%”)但得到的内容太多。 我所期望的是68,75,3.4 您可以在其后面添加百分号,并使用单个捕获组与re.findall一起使用 (\d*(?:\.\d+)?)% 如果应该存在\u200b部件,您还可以匹配: \\u200b(\d*(?:\.\d+)?)%

有一个数据帧,一些单元格包含百分比,进一步看每个单元格类似于
“\u200b68%”、“\u200b.75%”、“\u200b3.4%”
。只想把数字匹配出来。 尝试了
re.findall(“(\d*(\.\d+)”,“\u200b.75%”)
但得到的内容太多。
我所期望的是
68,75,3.4

您可以在其后面添加百分号,并使用单个捕获组与re.findall一起使用

(\d*(?:\.\d+)?)%

如果应该存在
\u200b
部件,您还可以匹配:

\\u200b(\d*(?:\.\d+)?)%

比如说

import re

regex = r"\\u200b(\d*(?:\.\d+)?)%"
test_str = ("\\u200b68%\n"
    "\\u200b.75%\n"
    "\\u200b3.4%")
matches = re.findall(regex, test_str)

print(matches)
输出

['68', '.75', '3.4']

您可以在后面添加百分号,并使用单个捕获组与re.findall一起使用

(\d*(?:\.\d+)?)%

如果应该存在
\u200b
部件,您还可以匹配:

\\u200b(\d*(?:\.\d+)?)%

比如说

import re

regex = r"\\u200b(\d*(?:\.\d+)?)%"
test_str = ("\\u200b68%\n"
    "\\u200b.75%\n"
    "\\u200b3.4%")
matches = re.findall(regex, test_str)

print(matches)
输出

['68', '.75', '3.4']

像这样的东西应该有用

\\u200b([0-9.]{1,5})%

演示:

类似的东西应该可以用

\\u200b([0-9.]{1,5})%
演示: