获取字符串数字前缀的最简洁方法

时间:2016-03-08 12:01:51

标签: 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')

所以我基本上想找到一种方法来用if替换while

9 个答案:

答案 0 :(得分:56)

你可以使用itertools.takewhile迭代你的字符串(iterable参数),直到它遇到第一个返回var defered = jQuery.Deferred(); function your_function(){ //do something! defered.reslove() return defered.promise } your_function.then(function(){ //this will not run till your_function is done }) 的项目(通过传递给预测函数):

False

答案 1 :(得分:13)

这是从字符串中提取数字列表的最简单方法:

>>> import re
>>> input = '123abc456def'
>>> re.findall('\d+', s)
['123','456']

如果您需要一个int列表,那么您可以使用以下代码:

   >>> map(int, re.findall('\d+', input ))
   [123,456]

现在您可以访问上面列表中的第一个元素[0]

答案 2 :(得分:5)

更简单的版本(留下另一个答案,因为关于哪种方法更好有一些有趣的争论)

http

答案 3 :(得分:3)

input[:len(input) - len(input.lstrip("0123456789"))]

答案 4 :(得分:1)

这是我的方式:

SELECT 'Duplicates' As Warning, count(*) AS RowCount FROM test where

答案 5 :(得分:1)

一种方式,但效率不高,因为它在没有break的整个字符串中起作用将是:

input_string = '123abc456def'
[input_string[:c] for c in range(len(input_string)) if input_string[:c].isdigit()][-1]

如果它是一个数字,则会将每个子字符串的大小增加,然后附加它。所以最后一个元素是你要找的那个。因为它是最长的起始线仍然是一个数字。

答案 6 :(得分:1)

你可以使用正则表达式

import re
initialNumber = re.match(r'(?P<number>\d+)', yourInput).group('number')

答案 7 :(得分:0)

另一个正则表达式版本从第一个非数字开始删除所有内容:

import re
output = re.sub('\D.*', '', input)

答案 8 :(得分:0)

['123']

也将返回$(document).ready(function() { var myVar = 20; });