在Python中获取字符串数字前缀的最简洁方法是什么?
通过"清洁"我的意思是简单,简短,可读。我不太关心性能,我认为无论如何它在Python中都难以衡量。
例如:
给定字符串'123abc456def'
,获取字符串'123'
的最简洁方法是什么?
以下代码获取'123456'
:
input = '123abc456def'
output = ''.join(c for c in input if c in '0123456789')
所以我基本上想找到一种方法来用if
替换while
。
答案 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;
});
。