簡體   English   中英

按條件從字符串中提取數字

[英]Extract digits from string by condition

我想從短字符串中提取數字,條件是數字位於字符( S標志)前面。

示例和結果:

> string = '10M26S'
> 26

> string = '18S8M10S'
> [18,10] OR 28

> string = '7S29M'
> 7

我可以將字符串拆分為列表以獲取單個元素,

result = [''.join(g) for _, g in groupby('18S8M10S', str.isalpha)]
> ['18', 'S', '8', 'M', '10', 'S'] 

但我怎么能得到1810呢?

re.findall與正則表達式r'(\\d+)S' 這匹配大寫S之前的所有數字。

>>> string = '10M26S'
>>> re.findall(r'(\d+)S',string)
['26']
>>> string = '18S8M10S'
>>> re.findall(r'(\d+)S',string)
['18', '10']
>>> string = '7S29M'
>>> re.findall(r'(\d+)S',string)
['7']

要獲得整數輸出,您可以將它們轉換為列表格式或使用map

>>> list(map(int,['18', '10']))
[18, 10]

您可以使用正則表達式

import re
regex = r"(\d+)S"
match = re.search(regex, '10M26S')
print(match.group(1))  # '26'
import re

[int(m) for m in re.findall(r'(\d+)S', "input10string30")]

這應該可以解決問題

暫無
暫無

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

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