Q:

How can I extract data from a string with no pattern?

How can I extract 117, 0.049, 207 in a string?
particulate 117㎍/㎥bad(81~150),ozone 0.049ppmaverage(0.041~0.080),overall air quality 207bad(151~250)

A:

Parsing unstructured text is messy: You can get quick results with regular expressions as seen here:
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']

... But to get always the results you want can be difficult.
Let's discuss the solution step by step...
First of all, your input contains numbers inside brackets -- and you don't want them.  So, we first need to remove the brackets with a regular expression substitution:
input=re.sub(r'\(.*?\)','',input)
# now input is: 
# particulate 117㎍/㎥bad,ozone 0.049ppmaverage,overall air quality 207bad

This substitution searches for sub-strings starting with an opening bracket '(' and ending with a closing bracket ')' and replaces them by an empty string.  In writing this expression, we need to take into account a few details:

Brackets have a special meaning in regular expressions.  To refer to actual brackets in your input, we need to escape them in the pattern and write '(' instead of '('.
Normally the pattern r'(.*)' would take the first opening bracket and all text up to the last closing bracket in our input.  This is too greedy. We add the question-mark after the star to make the expression non-greedy.  * Still, if the brackets in your input don't match up, you may get wrong results.

As the second step, we want to pick out numbers from the remaining input.  Your numbers may contain decimal point, so we need to allow this as well in the regular expression.  But matching numbers precisely with regular expressions is tricky.  Here are valid numbers (for some definitions of valid) that our solution doesn't pick up:
-1.32 1.04e4 -3.14e-23

Here is a string that our pattern picks up as numbers --- but you may not want them:
10.24.12.123

All of this can be fixed --- but the pattern will be more complex.  And you have to decide precisely what you want to get and what you don't want to get.
Here is a link to the Python regular expression documentation.

