bar*_*nos 25 python string python-2.7 python-3.x
在Python中获取字符串数字前缀的最简洁方法是什么?
通过"干净"我的意思是简单,简短,可读.我不太关心性能,我认为无论如何它在Python中几乎不可测量.
例如:
给定字符串'123abc456def',获取字符串的最简洁方法是什么'123'?
以下代码获得'123456':
input = '123abc456def'
output = ''.join(c for c in input if c in '0123456789')
Run Code Online (Sandbox Code Playgroud)
所以我基本上想找到一些方法来替换ifa while.
Kas*_*mvd 56
您可以使用itertools.takewhile哪个将迭代您的字符串(可迭代参数),直到它遇到返回的第一个项目False(通过传递给预测函数):
>>> from itertools import takewhile
>>> input = '123abc456def'
>>> ''.join(takewhile(str.isdigit, input))
'123'
Run Code Online (Sandbox Code Playgroud)
Tal*_*sar 13
这是从字符串中提取数字列表的最简单方法:
>>> import re
>>> input = '123abc456def'
>>> re.findall('\d+', s)
['123','456']
Run Code Online (Sandbox Code Playgroud)
如果您需要int的列表,那么您可以使用以下代码:
>>> map(int, re.findall('\d+', input ))
[123,456]
Run Code Online (Sandbox Code Playgroud)
现在您可以从上面的列表中访问第一个元素[0]
更简单的版本(留下另一个答案,因为关于哪种方法更好有一些有趣的争论)
input[:-len(input.lstrip("0123456789"))]
Run Code Online (Sandbox Code Playgroud)