如何使用Python 3.4從以下字符串中的數據中提取數字,例如117,0.049,207?如何從字符串中提取特定數據(不包含任何模式)?
particulate 117㎍/㎥bad(81~150),ozone 0.049ppmaverage(0.041~0.080),overall air quality 207bad(151~250)
如何使用Python 3.4從以下字符串中的數據中提取數字,例如117,0.049,207?如何從字符串中提取特定數據(不包含任何模式)?
particulate 117㎍/㎥bad(81~150),ozone 0.049ppmaverage(0.041~0.080),overall air quality 207bad(151~250)
解析非結構化文本是凌亂:您可以立竿見影使用正則表達式如下所示:
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
這種替代搜索開始用左括號「(」和一個右括號結束「)」子串並替換它們一個空的字符串。在寫這個表達式時,我們需要考慮幾個細節:
至於第二步,我們想從剩餘的輸入挑選出的數字。您的號碼可能包含小數點,所以我們需要讓這個問題,以及在正則表達式,但匹配的號碼精確地使用正則表達式很棘手。下面是有效的數字(對於s有效青梅定義),我們的解決方案不拾:
-1.32 1.04e4 -3.14e-23
這裏是一個字符串,我們的模式爲數字拿起---但你可能不希望他們:
10.24.12.123
所有這可以被固定 - 但是模式會更復雜。而且你必須準確地決定你想要得到什麼以及你不想得到什麼。
非常感謝!有效!!! –
如果您對解決方案感到滿意,請接受它作爲正確的解決方案。 –
我是新來的。我怎麼做? –
最重要的步驟是準確分析*數據結構以及您需要的數據結構。例如,你說「數字」,但是「81 150」和「0.041 0.080」呢?獲得任何數字很容易,要獲得精確的需要更多的努力。 – cdarke