簡體   English   中英

python regex - 從帶有數字和字符的字符串中提取數字

[英]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.joinre.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.

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