input='particulate 117㎍/㎥bad(81~150),ozone 0.049ppmaverage(0.041~0.080),overall air quality 207bad(151~250)'
import re
input=re.sub(r'\(.*?\)','',input)
results=re.findall(r'[\d.]+',input)
print(results) # this prints ['117', '0.049', '207']
。。。但是想要一直得到你想要的结果是很困难的。你知道吗
让我们一步一步地讨论解决办法。。。你知道吗
首先,您的输入包含括号内的数字,您不需要它们。因此,我们首先需要用正则表达式替换来移除方括号:
input=re.sub(r'\(.*?\)','',input)
# now input is:
# particulate 117㎍/㎥bad,ozone 0.049ppmaverage,overall air quality 207bad
解析非结构化文本比较麻烦:使用正则表达式可以快速获得结果,如下所示:
。。。但是想要一直得到你想要的结果是很困难的。你知道吗
让我们一步一步地讨论解决办法。。。你知道吗
首先,您的输入包含括号内的数字,您不需要它们。因此,我们首先需要用正则表达式替换来移除方括号:
此替换搜索以左括号“(”开始,以右括号“)”结束的子字符串,并用空字符串替换它们。在编写这个表达式时,我们需要考虑几个细节:
第二步,我们要从剩余的输入中挑选出数字。您的数字可能包含小数点,因此我们需要在正则表达式中也允许小数点。但是用正则表达式精确匹配数字是很棘手的。以下是我们的解决方案不适用的有效数字(对于有效的某些定义):
下面是一个字符串,我们的模式将其作为数字—但您可能不需要它们:
所有这些都是可以修复的,但模式将更加复杂。你必须准确地决定你想得到什么和不想得到什么。你知道吗
这里是到Python regular expression documentation的链接。你知道吗
相关问题 更多 >
编程相关推荐