我想从一个短字符串中提取数字,基于数字位于字符前面的条件(final AlertDialog builder = new AlertDialog.Builder(context, R.style.CustomAlert)
.setPositiveButton("Button", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//DO YOUR TASK (open your second dialog)
}
})
.setNegativeButton("Cancel", null)
.setView(linearLayout)
.setCancelable(false)
.create();
builder.show();
标志)。
示例和结果:
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
?
答案 0 :(得分:4)
将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]
答案 1 :(得分:1)
您可以使用regular expression。
import re
regex = r"(\d+)S"
match = re.search(regex, '10M26S')
print(match.group(1)) # '26'
答案 2 :(得分:-1)
import re
[int(m) for m in re.findall(r'(\d+)S', "input10string30")]
这应该可以解决问题