[英]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']
但我怎么能得到18
和10
呢?
將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.