[英]python regex - extracting digits from string with numbers and characters
我的數據包含諸如 'ms2p5'、'ms3'、'ms10' 之類的字符串,我需要提取數字以轉換為數字,如下所示。
'ms2p5' => 2.5
'ms3' => 3
'ms10' => 10
我嘗試了下面的正則表達式,它能夠得到匹配。 一個問題是在提取的字符串中間有一個字符的值,如“2p5”。 有一個通用函數可以很好地處理所有這些情況,同時將它們轉換為數值的正確方法是什么?
import re
re.search(r'\d+[p]*\d*', str).group()
您可以編寫一個搜索數值的提取函數(帶或不帶p
表示小數點,用.
替換p
,然后轉換為浮點數。例如:
import re
def extract_num(s):
return float(re.search(r'\d+p?\d*', s).group().replace('p', '.'))
strs = ['ms2p5', 'ms3', 'ms10']
print([extract_num(s) for s in strs])
輸出:
[2.5, 3.0, 10.0]
將str.join
與re.findall
str.join
使用:
los = ['ms2p5', 'ms3', 'ms10']
print([float('.'.join(re.findall('\d+', i))) for i in los])
輸出:
[2.5, 3.0, 10.0]
如果字符串都遵循您提供的示例,我可能會這樣做:
x = 'ms2p5'
float(x[2:].replace('p', '.'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.