Начальная точка: вы можете использовать регулярное выражение.
Например:
import re
para = """
This long text may contains units like kg, W, s, m.
"""
print(
re.findall(
r"\b(?:dag|dam|daL|min|sec|rad|deg|bar|mol|kg|hg|dg|cg|mg|\xb5g"
r"|km|hm|dm|cm|mm|\xb5m|kL|hL|dL|cL|mL|\xb5L|ms|\xb0C|\xb0F"
r"|sr|Pa|dB|eV|Bq|Ci|Gy|rd|Sv|cd|lm|lx|Gs|Mx|Wb|F|g|m|L|s|h"
r"|K|B|N|W|J|A|V|H|C|T)\b",
para,
flags=re.DOTALL,
)
)
Вы получаете:
['kg', 'W', 's', 'm']
Но у вас может быть ложный положительный результат .
Более сложное регулярное выражение необходимо, например, для соответствия "кВт.м ^ {- 1}".
РЕДАКТИРОВАТЬ
Пример «Более сложное регулярное выражение» может быть позицией GPS:
GPS_COORD_REGEX = (
r"(?:"
r"(\d+(?:[.,]\d+)?)\s*°" # group 1
r"\s*"
r"(\d+(?:[.,]\d+)?)\s*['’\u2032]" # group 2
r"(?:\s*"
r"(\d+(?:[.,]\d+)?)\s*(?:[»«“”\u2033]|['’\u2032]{2}))?" # group 3
r")"
)
Другой пример: совпадение m ^ 2, см ^ 2 и т. д. c. :
regex=r"\b(km|hm|dam|m|dm|cm|mm|µm)([23])\b"