簡體   English   中英

從python 1.5.2中的字符串中提取數字

[英]Extracting numbers from a string in python 1.5.2

我正在使用Telit模塊(GT864-py),我正在嘗試從使用AT命令時收到的返回值/字符串中提取數字。

這是我正在使用的代碼示例:

MDM.send('AT#ADC=1,2'+'\r', 5)
pump = MDM.receive(15)
pumpb = int(filter(str.isdigit, pump))

給出了回應

#ADC: 10 (This number can range from ~10-150)
OK

現在,我想在ADC之后過濾數字,但是,我還沒有找到解決方案。

通過在PythonWin 1.5.2+中使用此代碼,我收到以下錯誤:

NameError:isdigit

所以我假設P​​ython 1.5.2不支持isdigit,這是正確的嗎? 如果是這樣,有沒有人知道在#ADC:xxx之后提取數字的其他方法?

Python 1.5.2p2文檔可在線獲取。 實際上, str或模塊string都沒有isdigit


即使在Python 1.5中, str也是一個支持in操作的序列,所以你可以這樣做:

def isdigit(c):
    return c in '0123456789'

pumpb = int(filter(isdigit, pump))

為了更深入的分析我會使用一個正則表達式,與模塊re代替; 代碼

import re
match = re.search('#ADC:\s*(\d+)', pump)
if match:
    number = match.group(1)

這將匹配#ADC:后跟任意數量的空格,后跟1位或更多位[0-9] ; 數字在組1中捕獲,如果找到匹配,則將其值存儲為number

如果字符串總是完全"#ADC: " ,那么簡單的字符串切片也應該有效:

if pump[:6] == '#ADC: ':
    pumpb = int(pump[6:])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM